想知道是否有人知道如果垃圾郵件機器人能夠提交表單,如果沒有提交按鈕在頁面上。只是試圖做一些非常基本的垃圾郵件預防,而不使用驗證碼。我們的想法是,如果用戶以某種方式與表單交互,則使用jQuery來呈現提交按鈕。任何想法將不勝感激。如果頁面上沒有提交按鈕,垃圾郵件機器人能否提交表單?
回答
由圍繞WebKit或其他瀏覽器核心的代碼包裝組成的spambot可以強制執行DOM「submit()」,或者(甚至更激進)啓動它自己的POST事務。
最好把spambot想象成一個強大的邪惡機器人,它的瀏覽器不遵循原子能束附加到機器人大腦的規則。但是它是一個不能很好地閱讀的機器人。
是的,這是可能的,一個機器人不需要提交按鈕。
如果您有(pseudohtml):
<form action="POST" target="posting.php">
<input name="something"/>
<!-- some logic for the submit button -->
</form>
的機器人可以簡單地解析form
標籤並在窗體字段的名稱和發佈它自己的POST
,從來沒有接觸提交按鈕。
是的,他們可以。按鈕沒有完全必要:
$('#form_id').submit(); /* This is a jQuery trigger */
但機器人可能是討厭的,並出具了自己 POST請求到服務器,因爲它不是很難的事。
但是,如果您創建了一個<input type="hidden" />
帶有jQuery的secret-ish值(由服務器知道併爲每個會話動態檢索),並且只有在該值存在時才接受提交,則會停止所有未啓用JS的機器人。
缺點是,你會阻止非JS功能的用戶使用你的網頁。但這是你必須爭取殺死垃圾郵件發送者的持續戰鬥...
我想我們可以放心地說,Javascript被禁用的真實情況可以忽略。你能舉出一個不涉及這個人的實際案例:http://dailyyeah.com/wp-content/uploads/2010/05/unix-based-computer-reboot.jpg? – korona 2011-04-04 20:35:04
^這包括所有Mac用戶。 (我使用Linux,所以我被排除在外)。但是你有沒有聽說過NoScript Firefox插件?它阻止JS運行,直到你允許它,並且它非常流行,所以我在設計時仍然會考慮沒有JavaScript的人。 – Blender 2011-04-04 20:37:31
從未編碼垃圾郵件機器人,我只能做出假設。但我會假設提交按鈕的存在並不會真正有效。更可能的是,它正在查看<form>
-tag並根據該位置確定是否應該發出POST/GET請求。一個更好的選擇(但決不是傻瓜)將不使用<form>
,但手動做一個$ .post(因爲你提到使用jQuery),當你點擊一個按鈕或鏈接,收集POST數據在飛行中的元素。
一個機器人絕對能找到你的帖子按鈕,如果不經常。
非常流行的方法類似你正在嘗試創建一個蜜罐表單元素。表單上的可編輯蜜罐字段對人們是不可見的(您可以使用jQuery/CSS來隱藏這些表單元素)。它們在表單數據發佈時進行驗證,如果它們包含任何輸入,則提交者必須是某種類型的bot。
使用隱藏的字段名稱,驗證也可以停止這些漫遊器。如果電子郵件字段必須有@符號,並且機器人無法確定哪個字段是電子郵件,哪些字段不是電子郵件,那麼它將成功發佈郵件的機會大大減少。
恰恰是我在「Pragmatic Programmers」雜誌上閱讀過的內容。 – I82Much 2011-04-04 20:35:22
+1從未聽說過/使用過這種方法,#loveit – xandercoded 2011-04-04 20:35:40
我剛開始使用它,很驚訝於很少有人還不知道/使用這種方法。 – ashurexm 2011-04-04 20:38:28
通常情況下,我們會製作一個隱藏字段,名爲「多汁吸引人」,名字如「名字」。
然後在代碼隱藏我們運行類似:
if FirstName.text <> "" Then
<insert your "what I want to happen" code. maybe a popup saying "oops an error has been made" or just not submit the form. maybe redirect to a fake error page. like
response.redirect("thisisabot.aspx")
endif
也許**不做任何事情**。向垃圾郵件發送者提供錯誤信息是一個糟糕的主意:)讓他們認爲這一切都是正確的! ;) – 2013-01-28 10:51:11
沒有必要渲染提交按鈕經常將數據從遠程服務器發送,而不是從頁面本身填寫。驗證碼很可怕,有時候很不清楚,我不明白它說了什麼。我一次使用三種方法來阻止機器人。
- 比較表單源IP地址和目標IP地址,如果它們不匹配,則不會進行進一步的處理。
- CSS隱藏的字段留空,如果填充,它是一個bot,並被忽略。
- 另一個在提交表單時通過JavaScript接收預定值的字段。沒有匹配,沒有進一步的處理。
我還記錄了IP地址到數據庫表的嘗試。這些嘗試失敗了一次,兩次或全部測試。
但是,阻止血汗工廠垃圾郵件發送者完全是另一回事。血汗工廠垃圾郵件發送者是被廉價僱用來手動發送垃圾郵件的人。如果您的網站較大,則可能需要使用處理此類垃圾郵件的服務。一些服務也處理濫用的語言。
- 1. 如果垃圾郵件機器人隱藏,我可以防止垃圾郵件機器人提交表單嗎?
- 2. 機器人/垃圾郵件能否選擇單選按鈕?
- 3. 提交表單沒有提交按鈕
- 4. 提交表單沒有提交按鈕
- 5. 如何防止表單提交/郵件垃圾郵件?
- 6. 機械化 - 提交表單沒有點擊提交按鈕
- 7. 垃圾郵件機器人提交的表單有沒有構成安全風險?
- 8. 谷歌瀏覽器提交如果沒有提交按鈕
- 9. 如何觸發Mollom檢測表單提交爲垃圾郵件?
- 10. 表單提交按鈕/刷新頁面
- 11. 如何提交沒有提交按鈕的輸入表單?
- 12. 聯繫表單沒有按「提交」按鈕提交
- 13. 表單未按提交按鈕提交
- 14. 表單提交按鈕 - 每次提交更改操作頁面
- 15. 提交按鈕提交第一個表單頁面
- 16. 爲jQuery提交表單時郵件中包含提交按鈕
- 17. 提交按鈕,將提交表單併發送電子郵件?
- 18. Drupal:形式垃圾郵件,但沒有形式提交
- 19. 提交按鈕沒有提交
- 20. 表單沒有提交按鈕
- 21. CakePHP的表單按鈕沒有提交
- 22. 如何處理表單提交按鈕時提交按鈕沒有名字
- 23. Drupal的jquery提交表單沒有提交按鈕
- 24. Ajax表單提交併提交按鈕
- 25. 禁止提交表單按鈕提交
- 26. 提交表單的提交按鈕
- 27. 啓用提交按鈕,如果表單提交失敗
- 28. 如果上傳格式有效,按下表單提交按鈕
- 29. 表單提交的表單提交事件監聽器沒有提交動作
- 30. 如何阻止漫遊器和垃圾郵件提交評論?
我認爲你不應該重新發明輪子... 一切都可以繞過和黑客入侵,問題是你的網站真的有這種危險嗎?最好的事情將是有服務器deffence以及。但安捷倫...一切都可以繞過 – 2011-04-04 20:30:04
我讀到了一個欺騙垃圾郵件機器人的另一種方法,那就是向你的表單添加隱藏字段,以便正常人不會修改/發佈到服務器。垃圾郵件機器人很可能會填寫這些字段,在這種情況下,您可以檢測到這一點並拒絕他們發佈的任何內容。 – I82Much 2011-04-04 20:34:38
@guy:恰恰相反。在這裏,重新發明輪子將防止他對非專門的垃圾郵件。 – SLaks 2011-04-04 20:36:49