防止CSRF?
我已经从这里看到了一些问题(stackoverflow)和这个< /a> 帖子,但我仍然有一些问题...
在帖子表单中使用隐藏值,并在帖子到达服务器时检查它。
- 隐藏值可以很容易地被复制并发送,就像真实的值一样,“难以猜测”(如 md5)将无济于事。 (对吗?)
当您到达表单时设置 cookie 并将 cookie 值作为隐藏值发送。
- 您可以轻松更改 Cookie 值,或使用相同的真实隐藏值发送与真实 Cookie 完全相同的自定义 Cookie。 (对吗?)
使用“超时”,POST 值不会达到太晚。
- 因此,如果您的速度很慢,那么当您尝试使用隐藏值设置所有内容时就会失败。如果你动作快的话,一定会成功的。 (对吗?)
我想受到有关 CSRF 的保护...但我到底该怎么做呢?
I already seen some question from here (stackoverflow) and THIS post, but I still have some questions...
Using hidden value in the post form and check it when post reach the server.
- The hidden value can easy be copied and send exactly like the real one, "hard to guess" (like md5) will not help. (right?)
Setting a cookie when you reach the form and send the cookie value as a hidden value.
- You can easily change a cookie value or send a custom cookie exactly like the real one using the same real hidden value. (right?)
Using 'timeout', the POST values cannot reach too late.
- So, if you're slow you will fail when you try to set everything up with the hidden value. If you're fast it gonna work. (right?)
I want to be protected about CSRF...but how exactly I do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我发现防止 CSRF 问题的最简单方法是:
在服务器端,分配一个 HttpOnly cookie 到带有随机(不可猜测的)令牌的客户端
放置具有该 cookie 值的表单上的隐藏字段
提交表单时,确保隐藏字段值等于 cookie 值(在服务器端) things)
The easiest way I found to prevent CSRF issues is:
On the server side, assign an HttpOnly cookie to the client with a random (unguessable) token
Place a hidden field on the form with that cookie value
Upon form submit, ensure the hidden field value equals the cookie value (on the server side of things)
如果您进行以下更改,那么我认为您是安全的,
只是添加到上面:不要使用方法覆盖并且不支持旧浏览器。
If you make the following changes then I think you're safe
Just to add to above: Do not use method overrides and do not support old browsers.