2012-12-28 33 views
2

您好所有社區,如何檢測垃圾郵件形式的垃圾郵件並記錄IP和輸入?

我有體面的流量的網站,我在的AWStats分析一些日誌後,我發現有很多垃圾郵件我的搜索形式不好的話(性愛機器人,年輕的...等等)。這是一個問題,因爲每個搜索都有助於標籤雲。

我安裝了防DDOS腳本(在CentOS),但它不適合我的需要,這和殺死一些搜索引擎的IP(至極是非常糟糕)。

搜索垃圾郵件是由過多的IP地址來,所以我不能簡單地將它們添加到拒絕IP地址列表。一個好的解決方案是監視所有POST並將它們記錄到帶有搜索項+ IP地址的txt文件中。

這裏是我的網站的網頁表格:

<form action="<?= _domain ?>/search.php" method="get"> 
    <input type="text" name="q" value="<?=$q?>" id="query" /> 
    <select name="cat" style="margin-top: 5px;font-size: 16px;"> 
    <option value="all">All Files</option> 
    <?php list_categories('dropdown', $cat); ?> 
    </select> 
    <input type="submit" value="Search" id="submit" /><br /> 
</form> 

是否有人知道一個JavaScript代碼,或類似的東西,可以幫助我呀?

非常感謝您

+0

只存儲字陣列內,然後用用戶輸入的交叉檢查,提交之前。 – samayo

+1

captcha怎麼樣? –

+0

THX你,是的驗證碼是一個很好的解決方案太多,但它是因爲類似我沒有驗證碼 – user1792805

回答

2

一個巧妙的解決了這一點,我所看到的是,以包括「蜜罐」輸入框,並設置它的CSS顯示值無法比擬的。如果這個盒子裏有什麼東西,你就知道它是一個腳本。另外,使用真正模糊的字段的真實名稱,並傳入一個令牌,您可以在提交後進行驗證。例如:

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" /> 
<input type="text" name="q" value="<?= $tok ?>" 
    id="query" style="display:none;" /> 

或者可能將其設置爲您網頁的背景顏色;如果這就是白色的,是這樣的:

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" /> 
<input type="text" name="q" value="<?= $tok ?>" 
    id="query" style="font-size: 1pt; color: white;" /> 

或者將其設置爲一些不可見的保證金,如:

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" /> 
<input type="text" name="q" value="<?= $tok ?>" 
    id="query" style="margin-left: 9000px;" /> 

在處理腳本時,如果$_POST['q']設置爲任何東西,除了你傳遞的令牌,你知道它幾乎肯定被腳本修改了。爲了避免被發現,你也可以使用JavaScript來改變CSS顯示狀態,如果你感覺真的很聰明,你甚至可以做一些花哨的回報一樣用虛假結果的靜態頁面(這是相當有效),而不是實際的處理查詢,而不是返回一個錯誤或拒絕訪問頁面,該腳本可能會發現,允許攻擊者檢查,看看有什麼錯和調整自己的腳本。

+0

什麼答案國王Skippus thx你:)代碼看起來不錯,如果我實現你的第一個代碼$ _POST ['q'] =令牌傳入/可以監視結果腳本/機器人/用戶?有沒有辦法將日誌存儲到txt文件或什麼? – user1792805

+0

生成頁面時,創建一個隨機的字母標記並將其存儲在某處(如在數據庫中的標記表中)。例如,給定頁面加載的標記可能是「Moacoaco」,您可以將其插入到標記表中。然後,當表單被提交時,檢查提交的標記以查看它是否存在於標記表中。如果是這樣,請刪除它並繼續正常處理腳本。如果沒有,那麼你可能有一個腳本運行你的頁面。此時,我可能會返回一個僞造結果的靜態頁面,記錄它,並在10次左右嘗試後,開始阻止IP地址。 –

+0

我看到國王Skippus,即使這是現在的一個很好的解決方案,有太多的步驟來完成這一點,因爲我不是PHP開發人員,我明白,但我沒有經驗實現,因爲你說,我知道它不是一個艱難的事情編碼,但需要更多的學習.... thx你無論如何m8 – user1792805