防止虚假的ajax循环请求到PHP
Prevent fake looping ajax requests to PHP
在我的网站上,我为博客文章创建了一个评论区。用户可以编写评论,单击按钮,然后将包含JSON格式数据的AJAX请求发送到PHP。PHP将处理&验证数据,然后将其插入数据库。如果成功,将从数据库中检索所有评论,并使用JQuery重新加载所有页面的评论。
问题是任何人都可以使用他们的浏览器控制台伪造一个AJAX请求,填写他们自己的JSON,并将请求发送给PHP。如果这样做,所发生的一切是我的客户端验证是无用的。服务器端验证仍然可以工作。然而,还有一个更大的问题。
for(var i = 0; i < 10000; i++) {
//ajax request
}
用户可以很容易地插入成千上万的记录到我的数据库瞬间。
有没有人有任何建议,我如何才能防止这样的事情发生?它必须涉及在服务器端创建一些用户无法猜到的东西,并在AJAX请求期间以某种方式对其进行检查。我只是不知道该怎么做。
谢谢你的帮助
确保安全的唯一方法是添加验证码
这将防止大量/自动帖子。一个可能使用的库是Securimage。它易于使用和集成。您可以使用AJAX在10分钟内运行它。
如果可能的话,依赖其他方法(如cookie或某种类型的客户端验证)是有风险的。例如,KA_lin的解决方案可以在5分钟内被攻破:恶意用户可以发送伪造的cookie,这些cookie的页面计数总是为0,因此总是允许发布。或者更糟糕的是,他可能会创建一个小程序,在不发送任何cookie的情况下将内容发布到您的页面。上面的代码将创建一个新的cookie并接受他的帖子,每次…
我会添加一个会话变量,包含用户发布的帖子数量,给定许多页面,您可以形成像$SESSION['page_id_total_nr_comments']
这样的东西并跟踪这个数字,添加一个配置变量,让我们使用每篇文章最多添加X评论,例如:
function canUserAddComment($pageId){
$maxAllowed =......;
if(!isset($SESSION[$pageId+'_nr_comments'])){
$SESSION[$pageId+'_nr_comments'] = 0;
}
if($SESSION[$pageId+'_nr_comments']< $maxAllowed){
$SESSION[$pageId+'_nr_comments']++;
return true;
}
return false;
}
或
在保存时获取已使用的文章的评论数量,并决定是否可以创建另一个(仍然使用配置变量)
- Javascript在for循环中等待处理请求
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- 如何循环请求用户输入,直到用户在Acrobatneneneba XI中输入信息
- 响应 JSONP 请求时循环的无限空的目的是什么
- 跟踪循环中触发的请求-响应
- 使用promise在for循环中请求与订单相关的信息
- 带有一个回调的多个循环ajax请求
- 简单的Ajax请求,在React.js中循环数据
- RegEx导致无限循环/错误-请求的实体太大
- 通过递归循环同步ajax请求
- 使用Q.js按顺序返回循环的GET请求
- 从 for 循环内的 AJAX 链中的最后一个 AJAX 请求返回值
- 循环遍历 Angular HTTP 请求中的对象,等到响应后再运行下一个循环
- $http循环请求并在Angularjs中组装数据
- 在rails视图中发出Javascript循环请求
- 角度循环请求未定义
- 如何循环请求-承诺API请求调用
- While循环请求JSON
- 防止虚假的ajax循环请求到PHP