GK1*_*667 8 html javascript same-origin-policy
有人可以帮助我更好地理解同源政策.我已经看过几个描述它的网站,但我正在寻找一个更简单的解释,你会如何描述它?
这个链接 似乎是我找到的最好的工作.谁能扩展?有人可以解释为什么这个政策存在?
Lès*_*sté 26
需要同源策略来防止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);
Run Code Online (Sandbox Code Playgroud)
杰克可以轻松地使用相同的技术来收集数千个账号和引脚或银行经理通过他的账户访问的任何其他信息.
幸运的是,同源策略在大多数情况下保护我们免受这些类型的攻击,因为Jack的恶意页面托管在与银行应用程序不同的域中,因此不允许将XHR发送到银行应用程序.虽然恶意页面仍然可以包含向银行应用程序发出GET请求的图像,但重要的是不会通过GET请求启动带副作用的操作,并且应用程序检查他们收到的请求的引用者标头并利用反CSRF代币.
基本上,这意味着-只有从同一域提供的脚本才能不受限制地访问彼此的对象和属性(因此,如果您.js
定义了命名函数的文件,则可以从同一域上托管的任何其他文件中调用它)。
因此,如果您要从其他域限制中提供脚本,请应用。
该政策之所以存在,是因为将链接插入到另一个域中的javascript文件(例如,注入该文件的链接的一些javascript代码)太容易了。这存在安全风险-您实际上只希望执行源站点上的代码,而不仅仅是那里的任何代码。