[英]A confusion about same origin policy(sop) and csrf protection
我对相同来源政策(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
从bad.html与像一些代码值(TAB1开业) document.getElementById('token-id').value()
在bad.js
。
另一个问题是, 如果以上问题的答案为“否” ,那么我在Wiki https://en.wikipedia.org/wiki/Same-origin_policy#Security_Concerns中无法理解该句子。
关于发送新交易,即使由银行站点进行的CSRF保护也不起作用,因为脚本可以简单地完成与用户相同的操作
由于我们无法获得csrf令牌。 为什么它不起作用。 服务器可以通过验证csrf令牌来计算实际的发布请求。
我是否误解了csrf保护或SOP本身?
谢谢大家能帮助我解决这些困惑。
现在的问题是,是否没有SOP,是否可以使用bad.js中的document.getElementById('token-id')。value()之类的代码从bad.html(在tab1中打开)读取元素输入值。
否-因为没有引用其他选项卡。
如果正在读取的选项卡是通过window.open
(而不是手动)通过window.open
打开的,则可以读取令牌。
令人高兴的是, 确实存在相同来源政策,因此我们不必为此担心。
关于发送新交易,即使由银行站点进行的CSRF保护也不起作用,因为脚本可以简单地完成与用户相同的操作
CSRF令牌仅包含浏览器和友好站点可用的信息。
由于攻击站点无法读取令牌,因此攻击站点无法构造包含令牌的请求。 友好站点可以确定攻击站点构造的请求是不可信的,因为它不包含令牌。
如果不存在相同起源策略,则攻击站点可以读取令牌,这将使令牌无用。
由于确实存在“同源起源策略”,因此不必担心。
您对某些事情有误解,SOP表示,如果打开http://bad.com/bad.html
且该页面加载并执行bad.js
,则该javascript可以向bad.com
发出AJAX请求,但任何请求都指向除非good.com
明确接受(使用CORS协议),否则对good.com
将被阻止。
原因是对任何站点的任何请求都可能包含浏览器已存储的与该站点相关的cookie,因此bad.com可能会使用您在good.com上未关闭的会话进行有害的操作。
因此,关于您的问题:不,一个选项卡除非其他选项卡是相关的(父级-子级),否则它们不会知道其他选项卡,因此页面无法修改另一个选项卡的行为。 而且,SOP可以确保一个页面不能模拟为另一个页面
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.