我有一個簡單的垃圾郵件過濾器(防止垃圾郵件表單提交)設置在網站上通過產生一個隨機數,且用戶輸入。出於某種原因垃圾郵件仍然能夠通過,甚至沒有輸入隨機數。有沒有人有任何想法,這可能會發生?垃圾郵件通過簡單的垃圾郵件過濾器得到的,但我不知道該怎麼
下面的代碼:
<input name="Submit" type="submit" class="button" value="Send Message" />
我有一個簡單的垃圾郵件過濾器(防止垃圾郵件表單提交)設置在網站上通過產生一個隨機數,且用戶輸入。出於某種原因垃圾郵件仍然能夠通過,甚至沒有輸入隨機數。有沒有人有任何想法,這可能會發生?垃圾郵件通過簡單的垃圾郵件過濾器得到的,但我不知道該怎麼
下面的代碼:
<input name="Submit" type="submit" class="button" value="Send Message" />
上的選項,爲什麼垃圾郵件機器人越來越槽的是,他們不使用JavaScript和做形式的直接提交。
其中一個選項雖然是與AJAX異步發送表單。它可能會讓您免於某些殭屍程序(以及禁用了JavaScript的用戶)。
我不知道如何垃圾郵件機器人的內在邏輯,但我認爲,對「形」標記機器人搜索和嘗試投遞表單內容到形式的行動參數。 這種情況下,動作表單參數和AJAX表單提交的「拆分字符串編碼」可能會有所幫助。
但是,請記住,如果你的網站是不是對機器人主要目標這一招纔有效。
我沒有看到任何與您即時錯誤的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之類的服務器端語言進行備份要安全得多。
儘管如此,問題在於我的服務器上沒有PHP,這是我無法控制的,因爲它是我的僱主的。有沒有其他反垃圾郵件方法我可以使用,不使用PHP? – user671891
@user:當然,如果他們使用ASP.net。或者如果他們使用,我不知道,Perl。但是你需要某種服務器端代碼。客戶端上的任何內容都可以僞造,僞造,禁用或以其他方式獲得。 – cHao
使用PHP/ASP.NET/ColdFusion或任何您正在使用的服務器端驗證。從不完全依賴客戶端驗證,它最容易受到黑客攻擊和濫用。
一旦表單填寫完畢後,該值應該被髮送到,比方說,你檢查的價值在於它你期待一個review.php頁面。如果正確,則正常繼續,否則結束表單/提交代碼的執行並將用戶重定向到錯誤頁面。
只是讓我們知道你有什麼'語言'可以訪問 – Sotkra
您可以使用JavaScript來提交表單這樣,如果一個機器人已禁用JS無法提交表單。
爲什麼'else'在'validateForm()'中被註釋掉? –
對不起,它沒有被註釋掉,我只是把它複製錯了。 – user671891
用戶可以禁用JavaScript。所以他們可以繞過這個垃圾郵件過濾器。 – user671891