我有一個網站發送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或已登錄),每秒向我的網站上的所有發佈請求發送數百萬次請求。令牌如何防止這種情況發生?這不就是說每個請求都會產生數百萬個令牌嗎? –