2011-11-04 101 views
1

我有一個簡單的垃圾郵件過濾器(防止垃圾郵件表單提交)設置在網站上通過產生一個隨機數,且用戶輸入。出於某種原因垃圾郵件仍然能夠通過,甚至沒有輸入隨機數。有沒有人有任何想法,這可能會發生?垃圾郵件通過簡單的垃圾郵件過濾器得到的,但我不知道該怎麼

下面的代碼:

<input name="Submit" type="submit" class="button" value="Send Message" /> 
+0

爲什麼'else'在'validateForm()'中被註釋掉? –

+0

對不起,它沒有被註釋掉,我只是把它複製錯了。 – user671891

+0

用戶可以禁用JavaScript。所以他們可以繞過這個垃圾郵件過濾器。 – user671891

回答

1

上的選項,爲什麼垃圾郵件機器人越來越槽的是,他們不使用JavaScript和做形式的直接提交。

其中一個選項雖然是與AJAX異步發送表單。它可能會讓您免於某些殭屍程序(以及禁用了JavaScript的用戶)。

我不知道如何垃圾郵件機器人的內在邏輯,但我認爲,對「形」標記機器人搜索和嘗試投遞表單內容到形式的行動參數。 這種情況下,動作表單參數和AJAX表單提交的「拆分字符串編碼」可能會有所幫助。

但是,請記住,如果你的網站是不是對機器人主要目標這一招纔有效。

0

我沒有看到任何與您即時錯誤的JavaScript,但是,任何用戶都可以禁用:

var randomnumber=Math.floor(Math.random()*1001); 
var isNumberEnteredCorrect = false; 
var whatevertheyentered; 


function checkUserInput(whatevertheyentered){ 

if(whatevertheyentered == randomnumber){ 
    return true; 
} 
else { 
    return false; 
} 
} 

function validateForm() 
{ 
var x = document.forms["myForm"]["random_number"].value; 

    if(x == randomnumber){ 
    return true; 
    } 

    else{ 
    alert("The number you've entered is incorrect."); 
    return false; 
    } 


} 

用戶通過按下這個按鈕提交表單JavaScript在他們的瀏覽器中,所以這些功能不會執行。正因爲如此,你不應該僅僅依靠javascript來進行表單驗證。用諸如PHP之類的服務器端語言進行備份要安全得多。

+0

儘管如此,問題在於我的服務器上沒有PHP,這是我無法控制的,因爲它是我的僱主的。有沒有其他反垃圾郵件方法我可以使用,不使用PHP? – user671891

+0

@user:當然,如果他們使用ASP.net。或者如果他們使用,我不知道,Perl。但是你需要某種服務器端代碼。客戶端上的任何內容都可以僞造,僞造,禁用或以其他方式獲得。 – cHao

0

使用PHP/ASP.NET/ColdFusion或任何您正在使用的服務器端驗證。從不完全依賴客戶端驗證,它最容易受到黑客攻擊和濫用。

一旦表單填寫完畢後,該值應該被髮送到,比方說,你檢查的價值在於它你期待一個review.php頁面。如果正確,則正常繼續,否則結束表單/提交代碼的執行並將用戶重定向到錯誤頁面。

+0

只是讓我們知道你有什麼'語言'可以訪問 – Sotkra

0

您可以使用JavaScript來提交表單這樣,如果一個機器人已禁用JS無法提交表單。