如何处理CSRF(我猜)?

时间:2010-11-12 17:08:52

标签: php security forms csrf

例如,在admin cp中,要删除用户,有一个链接 - http://example.com/acp/delete-user.php?id=102。链接打开时,系统会自动从数据库中删除该用户。 想象一下,有人给我发了一个链接(就像那样),我不小心打开了它。这意味着,我在不知情的情况下删除了该用户。 =(如何处理它?POST方法?一些令牌?以及如何准确地完成它。我只是在学习。= P

4 个答案:

答案 0 :(得分:4)

我建议你用FORM做那种事情。 http://example.com/acp/delete-user.php?id=102显示带有DELETE按钮的表单和带有随机生成密钥的HIDEN INPUT。该值存储在服务器端的会话中。当您点击提交时,目标页面将检查您是否通过了正确的密钥。

网上有很多关于CSRF的资源。

答案 1 :(得分:0)

你看过this article了吗?正如其他人所说,我希望你能对所有事情进行认证。但要做正确的实现,您需要实现令牌服务。因为如果您已登录并且我向您发送链接,那么它将删除该用户。

答案 2 :(得分:0)

使用POST实际上只会让攻击者感到有点困难(尽管如此,使用POST会更好)。

您应该生成随机令牌并将其存储在用户的会话或数据库中(对于用户)。在执行任何操作之前,您必须检查是否存在正确的令牌。如果您将其存储在会话中,请记住也保护会话。

您可以在此处找到一个实现:http://www.serversidemagazine.com/php/php-security-measures-against-csrf-attacks

答案 3 :(得分:-1)

我希望您有一个身份验证系统,以便甚至可以访问您需要登录的链接。