2010-03-12 43 views
3

我們正在使用垃圾郵件機器人對其中一個相當大的網站發佈問題。看起來機器人正在創建用戶帳戶,然後發佈導致各種垃圾郵件鏈接的日記條目。防止垃圾郵件機器人在現場?

看來他們以某種方式繞過我們的驗證碼 - 無論是已被破解,或他們正在使用另一種方法來創建帳戶。

我們希望爲帳戶啓用電子郵件激活,但我們距離實施此類更改大約一週(由於繁忙的日程安排)。

但是,如果他們在網站某處使用SQL漏洞並執行整個跨站點腳本的事情,我不覺得這樣做會是不夠的。所以我的問題給你:

如果他們正在使用某種XSS漏洞,我怎麼能找到它?我儘可能地保證聲明的安全,但是,它又是一個相當大的站點,需要我花一些時間主動清理SQL語句以防止XSS。你能推薦什麼來幫助我們的情況?

+0

您的驗證碼是如何實現的以及用戶已成功完成它的事實標記?我的意思是,我認爲這不僅僅是POST中的「captchaokay = 1」參數。 :-)您是否使用了像[reCAPTCHA](http://recaptcha.net/)或類似的經過驗證的驗證碼解決方案? – 2010-03-12 15:14:21

+0

現在使用Securimage Captcha(http://www.phpcaptcha.org/),但當然不反對切換到reCAPTCHA。 – Mike 2010-03-12 15:20:49

回答

3

1)如上所述reCAPTCHA是一個好的開始。

2)Askimet是標記垃圾郵件發佈之前的好方法。這是Wordpress用來阻止垃圾郵件的方式,它非常有效。然後,您可以根據結果拒絕或排隊條目。它的API也非常容易使用。 (如果你需要,我有PHP代碼)。您可能需要商業授權,但我確信您可以開始使用免費版本。

3)驗證電子郵件地址絕對是一個好主意,因爲它需要一個有效的電子郵件帳戶,許多垃圾郵件發送者都沒有。只要確保您驗證電子郵件地址容易,就好像它太困難一樣,它也可以讓合法用戶離開。

1

如果機器人在某個地方的腳本中利用了一個洞,那麼在日誌中應該有這種證據。在命中之前檢查用戶創建腳本和日誌條目創建腳本的直接POST,而沒有通常的「正常」衝浪活動:機器人可能只拖了一次,並且繞過了拉下表單並假裝填充他們進來。在查詢字符串中查找帶有明顯XSS類型數據的GET請求。

您也可以在表單內的隱藏字段中嵌入一個隨機標記,並要求該標記存在才能通過激活/發佈。如果殭屍工具只解析你的註冊腳本並且做直接的帖子,這將阻止他們在他們的軌道上,直到殭屍創建者趕上並尋找令牌。但它會給你一些喘息的空間來實現一個更好的系統。

如果您的用戶帳戶表上沒有某種創建時間戳的時間戳,請將其中一個添加進來,並讓服務器創建時間戳,而不是您的用戶腳本。通過這種方式,您可以縮短掃描日誌以查看機器人活動的時間段,並查看他們在做什麼。如果沒有別的,你可以阻止機器人發佈的IP地址。