4

我试图在csrf protection这里使用表单密钥方法http://net.tutsplus.com/tutorials/php/secure-your-forms-with-form-keys/。但它仅适用于页面上的 1 个表单。我的问题是

假设我有一个表格

<form action="action.php" method="post">
<!-- code here -->
</form>

和我正在使用的我的 php

<?php
if(isset($_POST['submit']) && isset($_SESSION['user']))
{
//do something
}

我已经用session user它来确认他已登录并且我的网站正在提交表单,因为我的网站上已经进行了会话。我也必须使用csrf保护方法吗?

4

1 回答 1

4

我也必须使用csrf保护方法吗?

是的,因为这正是 CSRF 危险的原因;“受害者”的 cookie 会在不知不觉中发送到服务器,以代表“黑客”在另一个网站上提交修改后的表格(例如,伪装成可爱的小猫照片)执行特定操作。

当提交伪装的表单时,您的站点无法将请求与合法请求区分开来,因为身份验证将是有效的。添加 CSRF 令牌可确保表单是从您网站上的页面提交的。

创建会话时,您还会生成一个 CSRF 令牌。然后,在会话期间,此令牌将用于您网站上的所有表单;这样做可以防止同时打开多个选项卡的问题。

即使表单是从您的页面复制的,包括 CSRF 令牌,该令牌也会存储在不属于经过身份验证的用户的会话中。

于 2013-11-01T06:25:44.673 回答