只是想问一个关于PHP&的一般性问题。带有CSRF令牌的HTML表单,因此您可以生成随机令牌并将其存储在PHP中的会话变量中,并以HTML格式输出为隐藏字段。
但我是否正确地说,如果我们在这种情况下:
secureform.php
页badform.php
页如果Bob转到badform.php
页面并生成了令牌,然后他们转到secureform.php
并从secureform.php
获取令牌并将其放入badform.php
通过检查元素并提交它,那是否有办法绕过CSRF正确?
我是否可以就这是否有效以及如何防止此类事件发生反应得到一些反馈?如果有意义,如果不让我知道,谢谢!
答案 0 :(得分:3)
同一场景世界的跨站点请求伪造版本其他人(称之为Eve)欺骗Bob提交badform.php 。由于Eve控制表单的内容,但Bob使用其会话cookie或其他身份验证信息提交它,Eve可以执行只有Bob有权执行的操作。
但是,如果表单需要额外的CSRF令牌, Eve无法访问此令牌,那么当他们欺骗Bob提交表单时,它就会被拒绝。 Eve可以获取表单进行验证的唯一方法是欺骗Bob从secureform.php复制有效的令牌,这比欺骗他们提交表单要困难得多。