我对相同来源政策(SOP)感到困惑。
例如,http://bad.com/bad.html
具有bad.js
和http://good.com/good.html
用good.js
。我在Chrome中使用两个标签页(tab1和tab2)打开两个网址。
在good.html(在tab2中打开)中,有一个元素 <input id="token-id" type='text' name='token' value='123abc'>
现在的问题是,是否没有SOP,是否可以input
使用诸如document.getElementById('token-id').value()
in中的代码从bad.html(在tab1中打开)中读取元素值bad.js
。
另一个问题是,如果上述问题的答案为“否”,那么我在Wiki https://en.wikipedia.org/wiki/Same-origin_policy#Security_Concerns中无法理解该句子。
关于发送新交易,即使由银行站点进行的CSRF保护也无效,因为脚本可以简单地完成与用户相同的操作
由于我们无法获得csrf令牌。为什么它不起作用。服务器可以通过验证csrf令牌来计算实际的发帖请求。
我是否误解了csrf保护或SOP本身?
谢谢您能帮助我解决这些困惑。
您对某些事情有误解,SOP表示如果打开http://bad.com/bad.html
并加载并执行该页面bad.js
,则该javascript可以向发出AJAX请求bad.com
,但指向该请求的任何请求都good.com
将被阻止,除非good.com
明确接受(使用CORS协议)。
原因是,对任何站点的任何请求都可能包含浏览器已存储的与该站点相关的cookie,因此bad.com可能会使用您在good.com上未关闭的会话来执行有害的操作。
因此,关于您的问题:不,一个选项卡除非其他选项卡是相关的(父级-子级),否则它们不会知道其他选项卡,因此页面无法修改另一个选项卡的行为。而且,SOP可以确保页面不能模拟为另一个页面
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句