#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: "画像の文字を入力してください"
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS