2013-03-19 80 views
1

我們正在使用phpforms.net作爲我們的一個php網頁。我們正在通過bs表單提交不間斷的垃圾郵件。如何停止CURL表單垃圾郵件發送者?

他們顯然使用一些更復雜的再一個機器人只是自動填寫表格,因爲他們能夠繞過最大長度HTML要求,頁面上的所有javasript。這個Auto fill and submit forms on external site 顯示了一種使用CURL重新發送POST的方法,所以我想知道如果這是我反對,我該如何阻止它?

+1

您是否試過captcha? – 2013-03-19 19:28:32

+0

不幸的是,這是captcha和recaptcha存在的原因之一。另一種選擇是一種AKISMET風格的系統,它自己查看錶單提交併試圖確定它們是否是垃圾郵件。 – BrianHall 2013-03-19 19:30:37

+0

實際上,使用bot構建POST請求是一件簡單的事情。有一個瀏覽器和自動填寫表格會更復雜... – mensi 2013-03-19 19:30:51

回答

2

reCaptha會救你! :^) 它看起來不錯,它的代碼很容易實現。

+0

因此,reCaptch可以停止CURL垃圾郵件是不是它基於JavaScript? – nodsdorf 2013-03-19 19:53:53

+0

您應該閱讀[CAPTCHA](http://en.wikipedia.org/wiki/CAPTCHA)測試。簡而言之,它的想法是,只有通過驗證碼測試才能接受請求。這個請求是如何提出的 - 通過表單提交,通過CURL或直接從火星傳遞的信息:沒有腿 - 沒有糖果。 – 2013-03-19 20:00:11

1

根據PHPForms Features他們提供reCATPCHA。這實際上是爲什麼captcha被髮明的原因 - 因爲垃圾郵件機器人濫用html表單。

Captcha驗證碼的方法是嘗試很難讓一個機器人提交表單,無需人工干預。另一種方法是提交啓發式流程,如Akismet,它試圖通過查看提交的文本本身來確定垃圾郵件。

所以基本上你要麼讓它稍硬通過堅持驗證碼有效性提交表單,或者你只是對付垃圾郵件。

0

如果你只是處理一個特定的機器人,你可能會阻止該用戶代理。

來自實例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; 

在許多情況下,它們並不是真正的攻擊這麼多,因爲筆者沒有意識到他們的代碼粘貼在您的現場。如果它確實是某種惡意活動,那麼是的,你需要一個驗證碼。

+0

你可以很容易僞造'HTTP_USER_AGENT' – Baba 2013-03-19 19:56:26

+0

@Baba是的。因此,如果它是惡意的,這是行不通的。然而,實際上機器人在他們身後並沒有一個活躍的人類思維,所以可以用這樣簡單的方法輕鬆停止。 – 2013-03-19 20:19:54

0

使用服務器端代碼進行驗證應該在服務器端進行處理。如果有問題的客戶端不與JavaScript交互,JavaScript將不會執行任何操作。

驗證服務器端,即使你使用一個驗證碼,你應該始終驗證服務器上的信息。 使用驗證碼系統或文本分析系統或兩者,如reCaptchamollomakismet

0

這可能不會幫助你,但我最近碰到了一個垃圾郵件問題。我試過這個解決方案,它已經完全解決了垃圾郵件問題。 沒有必要使用驗證碼:

在您的表單中,創建一個新的輸入字段,並在您的CSS中使用display: none隱藏它。該字段是垃圾郵件陷阱。真正的用戶看不到這個字段,但垃圾郵件機器人可以。因此,在後端,如果來自此隱藏字段的$_POST數據包含任何內容,則提交的內容爲垃圾郵件,您可以按照這種方式處理。

瞭解更多關於它here

0

我做了幾件事。我實際上使用reCaptcha,然後有一個空白的文本字段,我用jQuery隱藏,因爲一些機器人實際上可以讀取一些CSS,並且如果display:none被附加到它,將不會填充字段。

一如既往,你也應該做一些後端處理。除了驗證我剛剛說的lameCaptcha字段外,如果前端有必填字段,則使用trim()並驗證它實際上是否有值。如果沒有價值,那就不要實際處理表單。

3

我最近創建了一個類,以防止使用Captha的垃圾郵件。 它有3件事。

蜜罐:字段爲display:none。垃圾郵件機器人可以看到它並將填充它,但您的合法用戶不會。如果它有任何價值,那麼表格是無效的。

微調框:在呈現表單之前創建並存儲在會話中的隨機字符串,然後發佈在type="hidden"輸入中。如果提交後字符串不同,則表單無效。

隨機字段名稱:存儲在每個字段名稱的會話(每個表單請求)隨機字符串

在窗體上實現此之後,從每天100多個垃圾郵件無人去了。

我記得在閱讀這些文章時,我會試着去尋找它。

相關問題