防止CSRF?

Ped*_*iel 5 csrf

我已经从这里看到了一些问题(stackoverflow)和这篇帖子,但我仍然有一些问题......

  1. 在帖子表单中使用隐藏值,并在帖子到达服务器时检查它.

    • 隐藏的值可以很容易地复制和发送完全像真实的,"难以猜测"(如md5)将无济于事.(对?)
  2. 到达表单时设置cookie并将cookie值作为隐藏值发送.

    • 您可以使用相同的真实隐藏值轻松更改cookie值或发送与真实cookie完全相同的自定义cookie.(对?)
  3. 使用"超时",POST值无法达到太晚.

    • 所以,如果你很慢,当你试图用隐藏值设置一切时,你将会失败.如果你很快就会工作.(对?)

我希望得到关于CSRF的保护......但我究竟是怎么做到的?

Mat*_*hew 7

我发现防止CSRF问题的最简单方法是:

  1. 在服务器端,使用随机(不可授权)令牌为客户端分配cookie

  2. 使用该cookie值在表单上放置一个隐藏字段

  3. 在表单提交时,确保隐藏字段值等于cookie值(在服务器端)

  • 这样做可行,但CSRF并不是要阻止人们一起提交表单,只是为了防止人们像其他人一样发布表单(即具有授权状态的登录名的人).随机令牌的整个目的是用户B(黑客)不知道用户A的令牌,因此不能伪造请求. (2认同)