Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
什么是保护CSRFPHP 再次攻击的最佳方法。
CSRF
建议使用表单标记,因此基本上生成一个随机值并将其存储在隐藏字段中。然后还将这个随机值存储在用户会话中。
最后在表单操作中,确保会话和表单令牌匹配。
if($_SESSION['token'] !== $_POST['token']) { die("bad... spanking..."); }
有没有更好/更简单的方法,因为这需要在我的应用程序中进行大量代码修改(大量表单和操作)。
不可以。为了防止 CSRF,您需要确保仅在您有理由相信用户实际提交了您的表单时才信任自动附加到请求(如 cookie)的凭据。做到这一点的唯一方法是让表单携带服务器用来授权处理的某种秘密。
如果您使用框架或库来编写表单,它可能会通过生成随机数、设置 cookie 或会话属性以及将隐藏输入添加到表单来有所帮助,但这三个步骤确实需要进行。