假设您有一个包含单个按钮的网站。
按下此按钮时,会向服务器发送 ajax 请求 - 服务器接收请求并在其数据库的内部计数器中加 1。
用户可以复制整个请求(及其 header )并创建一个脚本来发送无限请求以使服务器过载(并弄乱计数器)。
我正在努力避免:
- 记录用户IP
- 使用验证码
我在后端使用 php。有什么办法可以防止这种情况发生?有什么方法可以发送“隐形”请求吗?
最佳答案
您的问题称为“跨站请求伪造”。
解决这个问题的一个好方法是在调用带有按钮的页面时生成一个随机字符串,将其写入用户 session 和生成的页面,并在按下按钮时将其发送(例如在 GET 请求中)。
在后端,您检查提交的字符串是否与用户 session 中的字符串匹配,然后从 session 中删除该字符串。仅当两个字符串都匹配且不为空时才继续。
这样每个请求 URL 只有效一次,并且只对最初打开带有按钮的页面的用户有效。
关于php - 如何阻止用户伪造请求?或者如何检测虚假请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10695107/