Tag: SimpleCaptcha

目次

関連ページ

参考情報

概要

  • お問い合わせフォームなんかのスパム対策に画像認識を行うライブラリ。

基本

ImageMgickのインストール

  • MacPortsの場合
    sudo port install ImageMagick
  • CentOSの場合
    sudo yum install ImageMagick-devel

SimpleCaptchaのインストール

  • 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を使用する

  • 使用するControllerでincludeする。別にApplicationControllerじゃなくてもよい。
    ApplicationController < ActionController::Base
      include SimpleCaptcha::ControllerHelpers
    end
    
  • ビューを編集
    <%= show_simple_captcha %>
  • コントローラーのactionで検証する
    if simple_captcha_valid?
      do this
    else
      do that
    end
    

トラブルシューティング

「sh: convert: command not found」とログに表示され画像が表示されない。

  • ImageMagickのconvertコマンドが見つからないことが原因。
  • README.rdocを読むと解決方法がある。development.rbなどで以下のように指定すればよい(MacPortsの場合)。
    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」と表示され画像が表示されない。

  • ImageMagickの脆弱性修正のため制限が厳しくなった(2016年6月)。
  • Broken captcha requires ImageMagick configuration · Issue #6828 · diaspora/diaspora
  • Captchas not being generated in versions > 0.3.2. · Issue #50 · pludoni/simple-captcha · GitHub
  • policy.xmlを以下のように修正する(LABELを外す)
    <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) - てきとうなメモ

ラベルやプレースホルダに文字が表示されない

  • ja.ymlを使っている場合、次のように設定。
    ja:
      simple_captcha:
        placeholder: "Enter the word"
        label: "画像の文字を入力してください"
    

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-11 (木) 19:40:36 (679d)