我們正在使用phpforms.net作爲我們的一個php網頁。我們正在通過bs表單提交不間斷的垃圾郵件。如何停止CURL表單垃圾郵件發送者?
他們顯然使用一些更復雜的再一個機器人只是自動填寫表格,因爲他們能夠繞過最大長度HTML要求,頁面上的所有javasript。這個Auto fill and submit forms on external site 顯示了一種使用CURL重新發送POST的方法,所以我想知道如果這是我反對,我該如何阻止它?
我們正在使用phpforms.net作爲我們的一個php網頁。我們正在通過bs表單提交不間斷的垃圾郵件。如何停止CURL表單垃圾郵件發送者?
他們顯然使用一些更復雜的再一個機器人只是自動填寫表格,因爲他們能夠繞過最大長度HTML要求,頁面上的所有javasript。這個Auto fill and submit forms on external site 顯示了一種使用CURL重新發送POST的方法,所以我想知道如果這是我反對,我該如何阻止它?
根據PHPForms Features他們提供reCATPCHA。這實際上是爲什麼captcha被髮明的原因 - 因爲垃圾郵件機器人濫用html表單。
Captcha驗證碼的方法是嘗試很難讓一個機器人提交表單,無需人工干預。另一種方法是提交啓發式流程,如Akismet,它試圖通過查看提交的文本本身來確定垃圾郵件。
所以基本上你要麼讓它稍硬通過堅持驗證碼有效性提交表單,或者你只是對付垃圾郵件。
如果你只是處理一個特定的機器人,你可能會阻止該用戶代理。
來自實例How to block some of http user agent using php
$badAgents = array('fooAgent','blahAgent', 'etcAgent');
if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) {
exit();
}
或者只是一般捲曲:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'curl') !== false)
exit;
在許多情況下,它們並不是真正的攻擊這麼多,因爲筆者沒有意識到他們的代碼粘貼在您的現場。如果它確實是某種惡意活動,那麼是的,你需要一個驗證碼。
你可以很容易僞造'HTTP_USER_AGENT' – Baba 2013-03-19 19:56:26
@Baba是的。因此,如果它是惡意的,這是行不通的。然而,實際上機器人在他們身後並沒有一個活躍的人類思維,所以可以用這樣簡單的方法輕鬆停止。 – 2013-03-19 20:19:54
這可能不會幫助你,但我最近碰到了一個垃圾郵件問題。我試過這個解決方案,它已經完全解決了垃圾郵件問題。 沒有必要使用驗證碼:
在您的表單中,創建一個新的輸入字段,並在您的CSS中使用display: none
隱藏它。該字段是垃圾郵件陷阱。真正的用戶看不到這個字段,但垃圾郵件機器人可以。因此,在後端,如果來自此隱藏字段的$_POST
數據包含任何內容,則提交的內容爲垃圾郵件,您可以按照這種方式處理。
瞭解更多關於它here。
我做了幾件事。我實際上使用reCaptcha,然後有一個空白的文本字段,我用jQuery隱藏,因爲一些機器人實際上可以讀取一些CSS,並且如果display:none被附加到它,將不會填充字段。
一如既往,你也應該做一些後端處理。除了驗證我剛剛說的lameCaptcha字段外,如果前端有必填字段,則使用trim()並驗證它實際上是否有值。如果沒有價值,那就不要實際處理表單。
我最近創建了一個類,以防止使用Captha的垃圾郵件。 它有3件事。
蜜罐:字段爲display:none
。垃圾郵件機器人可以看到它並將填充它,但您的合法用戶不會。如果它有任何價值,那麼表格是無效的。
微調框:在呈現表單之前創建並存儲在會話中的隨機字符串,然後發佈在type="hidden"
輸入中。如果提交後字符串不同,則表單無效。
隨機字段名稱:存儲在每個字段名稱的會話(每個表單請求)隨機字符串
在窗體上實現此之後,從每天100多個垃圾郵件無人去了。
我記得在閱讀這些文章時,我會試着去尋找它。
您是否試過captcha? – 2013-03-19 19:28:32
不幸的是,這是captcha和recaptcha存在的原因之一。另一種選擇是一種AKISMET風格的系統,它自己查看錶單提交併試圖確定它們是否是垃圾郵件。 – BrianHall 2013-03-19 19:30:37
實際上,使用bot構建POST請求是一件簡單的事情。有一個瀏覽器和自動填寫表格會更復雜... – mensi 2013-03-19 19:30:51