簡體   English   中英

在沒有PHP的情況下保護Web聯系表單免受垃

[英]Protecting a web contact form from spam without PHP?

我應該為現有的Web聯系表單實現某種垃圾郵件保護(驗證碼等)。 但是,原始表單使用我無法訪問的虛擬服務器上的.cgi文件,因此我無法使用此腳本。 PHP郵件功能已關閉

我猜我需要自己的cgi文件,但我不是真的進入perl和cgi :-)

也許你可以指出我對這個問題的某種解決方案。

如果你想的話,你可以制作某種歪斜的抗體,你所有的用戶都開啟了javascript。

將表單action設置為某些404頁面,然后在javascript中將其更改回正確的action頁面。 例:

<form action="nowhere_ahaha" id="myform">
   ...
</form>
<script>
document.getElementById('myform').action = '/form_action.cgi';
</script>

所有這一切都有效,因為機器人通常不會運行js,但人類訪問者會這樣做。

你可以添加一個否定的Captcha:

負驗證碼與您的普通圖像驗證碼具有完全相同的目的:防止機器人提交表單。 圖像(“正面”)驗證碼通過實現僅人類可以執行的步驟來完成此操作,但機器人不能:從圖像中讀取混亂的字符。 但這很糟糕。 它會產生可用性問題,會損害轉換率,並且會讓很多人感到困惑。 為什么不反過來呢? 負驗證碼創建一個表單,其中只有機器人可以執行的任務,但人類不能。 這具有完全相同的效果,(與傳聞相比)與正驗證碼相比,假陽性識別率低得多。 所有這一切都沒有讓人類在提交表格時遇到任何額外的麻煩。 這真的是雙贏。 [來源]

在您的情況下,您最好使用蜜罐:添加一個新字段:

<div style="position: absolute; left: -2000px;"><input type="text" name="surname"  value="" /></div>

這假設您對收到姓氏不感興趣。 如果人們設法填寫此字段並提交,則他們很可能是機器人:普通瀏覽器不會顯示該字段:普通用戶不會看到它,因此不會填寫它。

現在,在你的CGI腳本中,只需過濾“surname”; 如果設置,停止處理並給出錯誤,或者只是保留它。

或者,如果無法做到這一點,請嘗試通過“where record has surname set”過濾已發布表單的結果。 比如說,如果您在excel / CSV中獲得結果:只需使用excel過濾掉具有姓氏的項目。 或者使用您的電子郵件過濾器將姓氏:....的任何郵件移動到特殊目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM