什麼是 Captcha
為了防止有心人士使用惡意程式進行大量註冊,通常會在表單頁面添加圖形認證碼的機制,即稱為Captcha。
Captcha 已經被廣泛應用在各種表單頁面當中,以下列出常見的應用。

「Yahoo 家族」發表文章時,使用的 Captcha。

「MSN Passport」註冊帳號時使用的 Captcha。
PloneCaptcha
在 Plone 上也提供了類似 Captcha 機制的 Product,由 ParTecs 所開發的 PloneCaptcha 就是其中之一,也是本次要介紹的主角。
安裝
在開始使用之前,首先要下載並安裝好 Plone Captcha Product,步驟就和一般的 Product 相同。
- 至 ParTecs 官方網站下載 PloneCaptcha
- 解壓縮到 ~zope/instance/Products 目錄當中
- 重新啟動 ZOPE
- 檢查 PloneCaptcha 是否成功載入
- 接著在 Plone 網站設定的「新增/移除產品」中,將「PloneCaptcha」新增進去
至此 PloneCaptcha 已經安裝完成。
PloneCaptcha 提供了一個測試頁面 http://your_portal/captcha_test ,請修改 your_portal 成你的 Plone 網址。測試頁面以 Plone 會員註冊表單為範本, 並加入了 Captcha 的驗證功能。
設定
由於 PloneCaptcha 是使用 captchas.net 的 CAPTCHA-Service,因此必須先前往註冊。
在取得一組帳號密碼之後,將帳號密碼填入 Products/PloneCaptcha/config.py 當中。
CAPTCHA_USER = 'demo'
CAPTCHA_PASS = 'secret'
使用
PloneCaptcha 必須搭配 Controller Page Template 使用,由於 Controller Page Template 內容廣泛已超出此次的介紹範疇,煩請參考延伸閱讀提供的資料。
要使用 PloneCaptcha ,我們只要在 Controller Page Template 物件中加入下例程式碼,就可以嵌入圖形驗證碼的功能。
div metal:use-macro="here/captcha/macros/edit" />
另外還要設定驗證的方式,讓程式知道必須通過圖形驗證才能繼續下去。
[validators]
validators = validate_captcha

以上簡單的介紹了 Captcha 以及在 Plone 上使用 Captcha Product 的方法。
由於表單頁面送出後的處理,通常需要較多運算資源,如果遭到惡意程式大量的送出帳號註冊、發表文章等攻擊行為,輕則可能擾亂站務運作,帶給使用者不便。嚴重將導致系統資源耗竭,無法提供服務。如能有效運用 Captcha ,將可大幅阻絕類似的惡意行為發生。
延伸閱讀
PloneCaptcha 官方網站:
http://partecs.com/ploneCaptcha.html
Introduction to creating and validating forms:



hi, i have created my own custom PloneCaptcha which is independent to any captcha site. It has its own varification method.
Contact me for more information.
Comment 由 vicky — 十一月 21, 2007 @ 7:08 午後
shuv07@redifmail.com
Comment 由 vicky — 十一月 21, 2007 @ 7:08 午後