php - 如何阻止用户伪造请求?或者如何检测虚假请求?

标签 php javascript ajax http request

假设您有一个包含单个按钮的网站。

按下此按钮时,会向服务器发送 ajax 请求 - 服务器接收请求并在其数据库的内部计数器中加 1。

用户可以复制整个请求(及其 header )并创建一个脚本来发送无限请求以使服务器过载(并弄乱计数器)。

我正在努力避免:

  1. 记录用户IP
  2. 使用验证码

我在后端使用 php。有什么办法可以防止这种情况发生?有什么方法可以发送“隐形”请求吗?

最佳答案

您的问题称为“跨站请求伪造”。

解决这个问题的一个好方法是在调用带有按钮的页面时生成一个随机字符串,将其写入用户 session 和生成的页面,并在按下按钮时将其发送(例如在 GET 请求中)。

在后端,您检查提交的字符串是否与用户 session 中的字符串匹配,然后从 session 中删除该字符串。仅当两个字符串都匹配且不为空时才继续。

这样每个请求 URL 只有效一次,并且只对最初打开带有按钮的页面的用户有效。

关于php - 如何阻止用户伪造请求?或者如何检测虚假请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10695107/

相关文章:

php - 在 PHP 中重新抛出异常是否会破坏堆栈跟踪?

javascript - 使用 mySQL、Php 和 JS,我如何请求 dans 使用我数据库中的数据?

javascript - 从 XML 实现 CSS 自动完成

javascript - 在Windows 7上为node.js安装socket io

JavaScript 与 WebBrowser 控件 C#

javascript - 如何在不刷新的情况下将 JavaScript/Ajax 中的选择值解析为 PHP

javascript - 从 POST 收到的响应已损坏

javascript - 当传递 JSON 请求时 ajax 调用失败

php - Laravel:在父表上与 *where* 而不是 *find* 的 Eloquent 关系

javascript - 如何调整跨域url中iframe的大小