#author("2016-09-12T15:12:46+09:00","default:wikiwriter","wikiwriter") #author("2017-05-11T19:40:36+09:00","default:wikiwriter","wikiwriter") &tag(SimpleCaptcha); *目次 [#b5308ffc] #contents *関連ページ [#o57ba447] -[[Rails3]] -[[Rails3/問い合わせフォーム]] *参考情報 [#sf7a2fab] -[[galetahub/simple-captcha · GitHub:https://github.com/galetahub/simple-captcha]] -[[Ruby on Rails に CAPTCHA の導入|苔の生したこんな日は:http://ameblo.jp/taty-usa/entry-11474036774.html]] -[[空飛ぶエリマキトカゲの観察日記: Rails3系でコメントスパム対策、難解(難読?)画像認証をする(CAPTCHAってやつ):http://fujioka0729.blogspot.jp/2013/08/rails3captcha.html]] *概要 [#o85560cf] -お問い合わせフォームなんかのスパム対策に画像認識を行うライブラリ。 *基本 [#s36e5ae8] **ImageMgickのインストール [#ob322873] -MacPortsの場合 sudo port install ImageMagick -CentOSの場合 sudo yum install ImageMagick-devel **SimpleCaptchaのインストール [#ta377c84] -Gemfileを編集 gem "galetahub-simple_captcha", :require => "simple_captcha" -インストール bundle install --path vendor/bundle -セットアップ。必要なスクリプトとテーブル(simple_captcha_data)を生成する。 bundle exec rails generate simple_captcha bundle exec rake db:migrate bundle exec rake db:migrate RAILS_ENV=production # 必要な場合 **SimpleCaptchaを使用する [#b11c4e14] -使用するControllerでincludeする。別にApplicationControllerじゃなくてもよい。 #pre{{ ApplicationController < ActionController::Base include SimpleCaptcha::ControllerHelpers end }} -ビューを編集 <%= show_simple_captcha %> -コントローラーのactionで検証する #pre{{ if simple_captcha_valid? do this else do that end }} *トラブルシューティング [#z78a0678] **「sh: convert: command not found」とログに表示され画像が表示されない。 [#we13546c] -ImageMagickのconvertコマンドが見つからないことが原因。 -README.rdocを読むと解決方法がある。development.rbなどで以下のように指定すればよい(MacPortsの場合)。 #pre{{ SimpleCaptcha.setup do |sc| sc.image_magick_path = '/opt/local/bin' # you can check this from console by running: which convert end }} ** 「running convert: convert: not authorized」と表示され画像が表示されない。 [#r190f508] -ImageMagickの脆弱性修正のため制限が厳しくなった(2016年6月)。 -[[Broken captcha requires ImageMagick configuration · Issue #6828 · diaspora/diaspora:https://github.com/diaspora/diaspora/issues/6828]] -[[Captchas not being generated in versions > 0.3.2. · Issue #50 · pludoni/simple-captcha · GitHub:https://github.com/pludoni/simple-captcha/issues/50]] -policy.xmlを以下のように修正する(LABELを外す) #pre{{ <policymap> <!-- <policy domain="system" name="precision" value="6"/> --> <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> --> <!-- <policy domain="resource" name="memory" value="2GiB"/> --> <!-- <policy domain="resource" name="map" value="4GiB"/> --> <!-- <policy domain="resource" name="area" value="1gb"/> --> <!-- <policy domain="resource" name="disk" value="16eb"/> --> <!-- <policy domain="resource" name="file" value="768"/> --> <!-- <policy domain="resource" name="thread" value="4"/> --> <!-- <policy domain="resource" name="throttle" value="0"/> --> <!-- <policy domain="resource" name="time" value="3600"/> --> <policy domain="coder" rights="none" pattern="EPHEMERAL" /> <policy domain="coder" rights="none" pattern="HTTPS" /> <policy domain="coder" rights="none" pattern="HTTP" /> <policy domain="coder" rights="none" pattern="URL" /> <policy domain="coder" rights="none" pattern="FTP" /> <policy domain="coder" rights="none" pattern="MVG" /> <policy domain="coder" rights="none" pattern="MSL" /> <policy domain="coder" rights="none" pattern="TEXT" /> <!-- <policy domain="coder" rights="none" pattern="LABEL" /> --> <policy domain="path" rights="none" pattern="@*" /> <policy domain="coder" rights="read | write" pattern="JPEG" /> <policy domain="coder" rights="read | write" pattern="PNG" /> </policymap> }} -LABELプロトコルについては[[ImageMagickの脆弱性(ImageTragick) - てきとうなメモ:http://boscono.hatenablog.com/entry/2016/05/08/111159]] **ラベルやプレースホルダに文字が表示されない [#d81a986d] -ja.ymlを使っている場合、次のように設定。 #pre{{ ja: simple_captcha: placeholder: "Enter the word" label: "画像の文字を入力してください" }}