3

我正在为我正在做的一个项目使用 Facebook 的 Tornado 网络引擎 for Python,并计划实施 XSRF 保护,但这让我有点困惑。

在一个典型的请求中,如果没有找到它,它会为用户的浏览器设置一个“_xsrf”cookie,然后将其与浏览器随请求发送的 HTML 表单值中嵌入的值相匹配。

好吧,假设攻击者做了这样的事情:

<img src="blah.com/transfer_money?account=0098&destination=0099&_xsrf=
(whatever the client's cookie contains)" title="cool image" />

什么可以阻止攻击者直接使用 cookie?据我所知,用于 XSRF 的 cookie 在check_xsrf_cookie 方法和实际生成 XSRF token 的 xsrf_token 方法中都不是“安全的” 。我错过了什么……?

4

1 回答 1

4

如果我理解正确,您是在询问是什么阻止了攻击者访问给定域中的用户 cookie。

好吧,答案是:浏览器安全策略。来自一个域的脚本无法访问来自其他域的 cookie(大多数情况下)。更多细节在这里:http ://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path

这可以通过使用XSS (Cross-Site Scripting)攻击来规避:将脚本直接注入到被攻击页面的源代码中。另一种方法是破解客户端应用程序(浏览器)。

但是,大多数情况下,攻击者不可能从其他域中检索用户的 cookie。额外的安全级别是将特定的 CSRF(或“ XSRF ”)令牌与特定用户相关联(并在验证期间检查它)。

于 2013-07-11T14:57:02.510 回答