【发布时间】:2011-05-09 04:59:03
【问题描述】:
例如,在 admin cp 中,要删除用户,有一个链接 - http://example.com/acp/delete-user.php?id=102 。打开链接时,系统会自动从数据库中删除该用户。 想象一下,有人给我发了一个链接(像那样),我不小心打开了它。这意味着,我在不知情的情况下删除了该用户。 =(如何处理?POST方法?一些token?具体怎么做。我只是在学习。=P
【问题讨论】:
例如,在 admin cp 中,要删除用户,有一个链接 - http://example.com/acp/delete-user.php?id=102 。打开链接时,系统会自动从数据库中删除该用户。 想象一下,有人给我发了一个链接(像那样),我不小心打开了它。这意味着,我在不知情的情况下删除了该用户。 =(如何处理?POST方法?一些token?具体怎么做。我只是在学习。=P
【问题讨论】:
我希望您有一个身份验证系统,因此您甚至需要登录才能访问该链接。
【讨论】:
我建议您使用 FORM 来执行此类操作。 http://example.com/acp/delete-user.php?id=102 显示一个带有 DELETE 按钮和一个带有随机生成密钥的 HIDEN INPUT 的表单。该值存储在服务器端的会话中。当您点击提交时,目标页面将检查您是否输入了正确的密钥。
网上有很多关于CSRF的资源。
【讨论】:
你看过this article。正如其他人所说,我希望您对所有内容都进行身份验证。但要正确实施,您需要实施令牌服务。因为如果您已登录并且我将链接发送给您,那么它将删除该用户。
【讨论】:
实际上,使用 POST 只会让攻击者更加困难(不过,使用 POST 会更好)。
您应该生成一个随机令牌并将其存储在用户的会话或数据库中(为用户)。在执行任何操作之前,您必须检查是否存在正确的令牌。如果您将其存储在会话中,请记住也要保护您的会话。
您可以在此处找到一种实现方式:http://www.serversidemagazine.com/php/php-security-measures-against-csrf-attacks
【讨论】: