2010-08-04 83 views
-1

好吧,讓我們假設我們有一個允許用戶發表評論的表單。如您所知,「壞人」可以輕鬆地在PHP Curl的幫助下發送垃圾郵件。我如何保護我的網站免受包含captcha的情況?謝謝。保護網站免受PHP Curl post方法?

回答

1

最簡單的方法是使用某種形式的驗證碼保護(reCaptcha),或讓用戶登錄後才能發表評論(這實際上並不能防止垃圾郵件,但可以更輕鬆地對付通過阻止他們的帳戶發送垃圾郵件)

除此之外,你還可以採取一些簡單的預防措施,即。限制他們在特定時間範圍內可以執行的評論數量 - 也許只有在超過此限制時纔會顯示驗證碼,以確定它們是否爲人類(如此處所述)。

+0

即使capcha不是100%安全的,請參閱http://ejohn.org/blog/ocr-and-neural-nets-in-javascript/ – Sarfraz 2010-08-04 12:06:34

+0

我知道,但[reCaptcha](http://www.recaptcha。 com)對於OCR攻擊是非常安全的,甚至可以讓盲人用戶訪問:p。 – wimvds 2010-08-04 12:24:25

4

如果您的意思是「如何保護我的網站不被瀏覽器以外的程序訪問」,則答案几乎是「您不能」。瀏覽器只是一個發送HTTP請求的程序。你可以玩嘗試拒絕看起來不像瀏覽器的HTTP請求的遊戲,但對於一個任意程序(使用curl或者Perl/Python/Ruby庫)來模仿頭文件是非常簡單的「真實」的瀏覽器發送。

+0

問題不在於這個,Sarfraz。 – 2010-08-04 09:57:50

+3

@hey答案在那裏:「你不能」。就是這樣。 – Maerlyn 2010-08-04 09:59:38

+0

@hey:***如您所知,「壞人」可以輕鬆地在PHP Curl的幫助下發送垃圾郵件。 – Sarfraz 2010-08-04 10:00:24

2

通常的作用是生成一個隨機值並將其存儲在用戶的會話中。 當我輸出表單時,我將這個值作爲一個隱藏的輸入。

當表單發佈時,比較發佈的值與會話中的值。每個值只能使用一次(因此在輸出表單之前更改它)。

那些垃圾郵件通常不會存儲cookie,這意味着當郵件被執行時,您沒有當前會話 - >沒有可比較的值,所以您知道發生了某些事情。如果他們確實發生了存儲cookie的情況,他們會針對每個帖子的形式發生衝突,只有第一次提交纔會成功。如果他們每次再次加載頁面並解析表單,則此方法不起作用。但我認爲沒有辦法來防止這種情況發生。

當然,這意味着您需要爲您網站上的每位訪問者分配會話,這也意味着存儲Cookie。無論是那個還是一個驗證碼,我都不知道其他方法。

+0

會話支持和表單檢查很容易集成。當然,由於他們不會那麼努力地嘗試(有更低的懸掛水果),所以你會得到主要的垃圾郵件,但它不會成爲真正的障礙。 – Wrikken 2010-08-04 10:02:12

+0

+1滾球的一個很好的解決方案。 – 2010-08-04 10:03:07

+0

@Wrikken如果有人想要模擬一個完整的瀏覽器,那麼現實是不現實的 - 我猜這只是提高目標帖子。 – 2010-08-04 10:04:13

1

好吧,你可以嘗試一下沿着包含有效sessionid的表單上的隱藏控件的行。此sessionid將在POST上進行驗證,並且只有在它成功後,該帖子纔有效。

這可以使用/不使用JavaScript。 jim