我有一个网站发送XMLHTTPRequests到一个PHP文件,它处理HTTP POST请求并返回JSON格式的数据。 post_requests
文件的网址是公开信息(因为用户只能查看页面的JS代码并找到我要发送HTTP请求的URL)防止spammy XMLHTTP请求到php
我主要在PHP中处理HTTP Post Requests:
//First verify XMLHTTPRequest, then get the post data
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
{
$request = file_get_contents('php://input');
$data = json_decode($request);
//Do stuff with the data
}
不幸的是,我相当肯定的是,头是可以被欺骗和一些狡猾的用户或点击机器人可以只垃圾邮件我的职务的请求,多次查询我的数据库,直到我的网站出现故障或他们去了战斗。
我不确定他们的请求是否会在冻结服务器和他们的请求方面发挥巨大的作用(因为每秒20个请求没有那么多)。我应该对此做些什么? (特别是在DDOS攻击的情况下)。我听说过的限速,你记录每一次的实例一些IP请求数据,然后跟踪,如果它们在本质上垃圾:
INSERT INTO logs (ip_address, page, date) values ('$ip', '$page', NOW())
//And then every time someone loads the php post request, check to see if they loaded the same one in the past second or 10 seconds
但是,这意味着每当有一个正常用户的请求,我不得不花费资源来记录它们。是否有标准或更好的“练习”(可能是某些服务器配置?)来防止或处理他的疑虑?
编辑:只是为了澄清。我指的是一些编码软件(使用cookie或已登录)的人员,每秒向我的网站上的所有PHP请求文件发送数百万个请求。
使用类似CSRF保护的东西,在服务器已知的页面上随机输出一些内容,并检查它是否存在,请求不是来自您的站点。 – adeneo
那么,在DDOS的情况下,速率限制可能甚至不会有帮助,因为它们通常欺骗请求中的IP地址和/或通过多个系统发送它。我建议只传递一个来自每个会话的唯一标记。 –
对,我可以看到这会有什么帮助,但我更多的要求。某人编写软件(使用cookie或已登录),每秒向我的网站上的所有发布请求发送数百万次请求。令牌如何防止这种情况发生?这不就是说每个请求都会产生数百万个令牌吗? –