1

在双重提交cookie csrf预防方案中,服务器是否需要提供cookie?

看来我可以让客户端页面上的javascript生成并设置一个cookie“anti_csrf”,然后双重提交(一次作为cookie,由浏览器完成,一次在请求正文中)。

外部域将无法读取或写入“anti_csrf”cookie 以将其包含在请求正文中。

这是安全的,还是我忽略了什么?

4

3 回答 3

1

Tgr,请阅读:

http://jazzy.id.au/default/2010/09/20/cracking_random_number_generators_part_1.html

攻击者所需要的只是从随机数生成器中获取一个或两个令牌,然后他们可以预测每个后续和每个之前的随机数,如果它不是加密安全的。如果随机数生成是在 Javascript 中在客户端完成的,我不知道有哪个浏览器使用加密安全的随机数生成器,所以他们只需调用 Math.random() 几次就可以计算出什么为您的 cookie 生成了令牌。

于 2010-10-18T23:29:19.953 回答
0

乍一看似乎很安全,但这意味着没有 javascript 的用户无法使用您的表单。

于 2010-05-08T19:13:06.393 回答
0

如果用户已经为您的域设置了“anti_csrf”cookie,那么 CSRF 攻击者就可以在家了!HTTP 请求将cookie 一起发出,当然如果您知道值是什么,很容易将参数包含在 POST 中。

cookie名称不必是秘密,但 cookie必须是只有用户会话知道的难以猜测的秘密。这样,攻击者不知道(也无法猜测)在攻击性 HTTP 事务中放入什么内容。

如果您将代码放在构成 cookie 值的页面上,那么您必须假设攻击者可以在您的站点上获得他/她自己的会话(即有效的“真实”登录)并直接检查代码。如果很容易弄清楚 cookie 值是如何在客户端生成的(并且,对于人类已知的任何客户端解决方案,它都会是),那么攻击者可以再次让他们的攻击页面包含正确的参数值攻击POST。

于 2010-04-01T15:39:09.760 回答