有没有人可以帮我更好的理解同源策略。我已经看过几个描述它的网站,但我正在寻找一个更简单的解释,你会如何向一个孩子描述它?
这个link似乎是我发现的最好的。任何人都可以扩展吗?有没有人能解释一下为什么会有这个政策?
发布于 2012-07-14 00:58:32
需要使用同源策略来防止CSRF。想象一下这样的场景:
var xhr = new XMLHttpRequest(),
data = "from="+victimAccount
+ "&to="+jacksAccount
+ "&amt=a+gazillion+dollars";
xhr.open("POST", "http://tbtfbank.tld/accounts/wiretransfer.aspx", true);
xhr.send(data);而Jack也可以很容易地使用同样的技术来获取数千个帐号和pins,或者银行经理Joe通过他的帐户可以访问的任何其他信息。
幸运的是,同源策略在大多数情况下可以保护我们免受这些类型的攻击,因为Jack的恶意页面托管在与银行应用程序不同的域上,因此不允许对银行应用程序进行XHR。尽管恶意页面可能仍然包含向银行应用程序发出GET请求的图像,因此重要的是不要通过GET请求启动有副作用的操作,并且应用程序要检查它们收到的请求的referrer头,并利用反CSRF令牌。
发布于 2012-07-14 00:27:36
基本上,这意味着-只有来自相同域的脚本才能不受限制地访问彼此的对象和属性(因此,如果您有一个定义了命名函数的.js文件,则可以从同一域中托管的任何其他文件中调用它)。
因此,如果您提供的是来自不同域的脚本,请务必应用限制。
该策略之所以存在,是因为在不同的域中插入指向某个javascript文件的链接太容易了(比如,一些javascript代码会注入指向这样一个文件的链接)。这是一个安全风险-你真的只想要来自你要执行的站点的代码,而不是任何存在的代码。
https://stackoverflow.com/questions/11474336
复制相似问题