在PHP中防止CSRF攻击的最佳方法

时间:2012-08-25 00:21:30

标签: php security csrf

在PHP中再次保护CSRF攻击的最佳方法是什么。

建议使用表单令牌,因此基本上生成一个随机值并将其存储在隐藏字段中。然后还将此随机值存储在用户会话中。

最后在表单操作中,确保会话和表单令牌匹配。

if($_SESSION['token'] !== $_POST['token']) {
   die("bad... spanking...");
}

是否有更好/更简单的方法,因为这需要在我的应用程序中进行大量代码修改(许多表单和操作)。

1 个答案:

答案 0 :(得分:2)

没有。为了防止CSRF,您需要确保只有在您有理由相信用户实际提交了表单时才信任自动附加到请求(如cookie)的凭据。唯一的方法是让表单携带服务器用来授权处理的某种秘密。

如果你使用框架或库来组成你的表单,它可能有助于生成随机数,设置cookie或会话属性,并将隐藏的输入添加到表单,但这三个步骤确实需要发生。