如果没有同源策略,一个邪恶的网站可以读取 CSRF 令牌吗?

Posted

技术标签:

【中文标题】如果没有同源策略,一个邪恶的网站可以读取 CSRF 令牌吗?【英文标题】:Without Same Origin Policy could an evil site read the CSRF token? 【发布时间】:2017-12-09 05:24:56 【问题描述】:

来自关于同源政策的***https://en.wikipedia.org/wiki/Same-origin_policy

同源策略有助于保护使用经过身份验证的会话的网站。以下示例说明了在没有同源策略的情况下可能出现的潜在安全风险。假设用户正在访问银行网站并且没有注销。然后,用户转到另一个站点,该站点在后台运行一些恶意 javascript 代码,该代码从银行站点请求数据。由于用户仍在银行网站上登录,恶意代码可以做任何用户在银行网站上可以做的事情。例如,它可以获取用户最近交易的列表、创建新交易等。这是因为浏览器可以根据银行站点的域向银行站点发送和接收会话 cookie。

这部分我明白了,但现在……

访问恶意站点的用户会认为他或她正在访问的站点无法访问银行会话 cookie。虽然 JavaScript 确实无法直接访问银行会话 cookie ...

因为会话 cookie 被标记为 httpOnly?

...它仍然可以使用银行站点的会话 cookie 向银行站点发送和接收请求。因为脚本基本上可以像用户一样做,即使是银行网站的 CSRF 保护也不会有效。

同源策略禁止跨源读取。因此,如果我们假设没有强制执行 SOP,那么恶意站点可以从响应中读取 CSRF 令牌吗?这就是***说即使 CSRF 保护也无效的原因吗?

【问题讨论】:

【参考方案1】:

是的,你已经明白了。如果没有 SOP,恶意脚本会简单地请求任何具有 CSRF 令牌的页面,读取它,然后使用该令牌构造其不安全的请求。

所以 SOP 和 CSRF 保护对于保护用户在浏览器发送来自外部域的请求的身份验证 cookie 的世界中都是必要的。

【讨论】:

以上是关于如果没有同源策略,一个邪恶的网站可以读取 CSRF 令牌吗?的主要内容,如果未能解决你的问题,请参考以下文章

前端跨域

同源策略

同源策略

前端安全之同源策略CSRF 和 CORS

外行术语中的同源策略

同源策略的解决方案