iThome online | iThome Blog | iThome周刊訂閱

載入中...

twtw

IT邦初學者
9級

[RoR] 簡單建置 captcha 圖形驗證的機制

什麼是 Captcha?也有 中文 的相關說明。常會看到類似這樣的圖形:

接續前幾篇利用 ImageMagick 相關的圖形議題,可快速加上 captcha 的機制。



收到書籤:發佈到twitter      
分享時間:2008-10-09 04:44:19

▼ ADVERTISEMENT ▼

分享內容(
8

簡而言之,就是做成人可以辨識,但無法利用程式軟體去辨識的圖形,要人親自回應圖形內容是什麼,才提供請求服務之機制。通常會在可以留言、註冊帳號、下載檔案等功能中,加入這 Captcha 的機制,以防止被透過程式,造成大量的 spam 留言,註冊、下載;為了防止辨識軟體破解,而會將圖形做一定程度的扭曲,目的是使真人看得懂,但程式無法辨識出,這是圖形特色。

安裝 captcha 的 plugins
RoR 中加入 Captcha 的機制有幾種的解決方式,在此用最簡單的方案 Simple Captcha ,只要照著該文的步驟,很快就可以建置此機制。

# 如果系統沒有 subersion 的話,會無法執行再下一個指令(有關 svn: 的網址下載),才需要先做安裝 subversion 的動作。
yum install subversion
# 安裝 plugins
script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha
rake simple_captcha:setup
rake db:migrate
# 在 config/routes.rb 編輯:
ActionController::Routing::Routes.draw do |map|
...
# 多加這一行:
  map.simple_captcha '/simple_captcha/:action', :controller => 'simple_captcha'
...
end
# 在 app/controllers/application.rb 編輯:
ApplicationController < ActionController::Base
...
# 多加這一行:
  include SimpleCaptcha::ControllerHelpers
end

captcha 使用的環境設定完成。

使用 captcha 的機制
以前一日 [RoR] 簡單畫出 Web 2.0 特色圖形 Badges 徽章 標記 的例子為例,要加上 captcha 只要在 app/views/demo/index.html.erb 裡:
<%= show_simple_captcha(:label => "請輸入您所看見的字母", :image_style => "random", :distortion => 'medium') -%>
# 在 <%= submit_tag "畫出預覽", :name => nil %>  這一行的上面加入上面這一行

上述的 show_simple_captcha 的其他參數語法,可詳見該網站 Simple Captcha 來測試出會有怎樣不同的畫面。

而在 相對應的 controller 之中,只要將需要做這個圖型驗證的 action ,加入
  if simple_captcha_valid?
    do_this # 原有的 action 動作
  else
    do_that # 不進行上述 action 的回應
  end
這樣的語法,就可先檢查圖型驗證是否正確,而決定是否執行該動作:
所以在 前一篇 的原始碼中 app/controllers/demo_controller.rb 加入上述的語法:
def star
if simple_captcha_valid?
# 若沒有 text 的參數,用此預設值寫出字來
...
else
    render :text => "識別碼不對,請回上一頁,重新整理後再輸入新的正確的識別碼"
end

end

這樣在接續 前一篇 的程式碼,再加上述的語法,就會出現像

就可利用 captcha 而達到防止被濫用的目的。

參考資料:http://expressica.com/simple_captcha/

[RoR] 簡單建置 captcha 圖形驗證的機制

目前沒有資料

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

▼ ADVERTISEMENT ▼

熱門標籤

 cisco   crystal   exchange   it   java   javascript   linux   m-power   mail   microsoft   msnlib   msnp15   msnsdk   msn機器人   mysql   nas   oracle   outlook   pmi   pmp   raid   report   sap   server   smartquery   sql   vista   windows   xp   倍力   倍力資訊   免費軟體   國際專案管理師   報表   專案管理   微軟   有話大聲說   活動   省錢   網路   網路儲存   網路管理   網頁安全   網頁設計   資安   資料庫   資訊安全   防毒軟體   2003   2008