【发布时间】:2012-09-08 19:18:29
【问题描述】:
所以我们正在建立一个网站并创建我们的基本信息以将登录信息发送到我们的数据库。我们在尝试禁止仅插入自己的数据的请求时遇到了麻烦。
例如
http://testing.site.com/php/interfaces/User.php?Action=1&Email=test@gmail.com&FirstName=herp%20derp
通过替换电子邮件和名字,他们能够将多个用户添加到数据库中,并且可能使用数千个脚本。有没有办法在不使用验证码的情况下防止这种情况发生?我们正在尝试将网站设计做到最小化和开放性,因此如果可能的话,我们希望能提供一些意见。
我们考虑过的一个选项是让我们的 PHP 离线并只允许我们的 API 访问它 - 但是它仍然存在用户添加授权数据的问题(并且我们的数据库因数以千计的多个请求而过载)
【问题讨论】:
-
这不是您应该通过 GET 执行的操作,而是使用 POST。将一次性 CSRF 令牌添加到表单中,以防止快速重复提交。在极端情况下,您还可以按 IP 限制提交 - 来自单个 IP 的提交越多,处理它们的时间就越长。另请参阅this question。
-
为授权请求添加令牌或api密钥