26

フォーム送信用の Rails プロジェクトにキャプチャを実装したいのですが、何を使用すればよいかわかりません。私のアプリケーションはあまり高いレベルのセキュリティを必要としないので、私は実装のシンプルさと使用中の信頼性に傾倒しています。

誰にもお勧めはありますか?

4

7 に答える 7

19

Rails アプリケーションに CAPTCHA を追加する最も簡単な方法は、Ambethia reCAPTCHAを使用することです。

1. インストール:

config.gem "ambethia-recaptcha", :lib => "recaptcha/rails", 
      :source => "http://gems.github.com"

必要に応じて、プラグインとしてインストールすることもできます。

2. reCAPTCHA アカウントを取得します。

reCAPTCHA キーを作成する必要があります。reCAPTCHA サイトで実行できます。

3. 使用法:

を使用recaptcha_tagsして必要な HTML コードを出力し、 で入力を検証しますverify_recaptcha

4. さらに読む:

于 2009-12-07T13:23:18.463 に答える
5

インストール

以下を GEMFILE に追加します

gem "galetahub-simple_captcha", :require => "simple_captcha"

また

gem 'galetahub-simple_captcha', :require => 'simple_captcha',
    :git => 'git://github.com/galetahub/simple-captcha.git'

次にbundle install、Bundler を使用している場合は実行します (または、Rails 構成にパッケージ マネージャーを使用します)。

設定

インストール後、次の簡単な手順に従ってプラグインをセットアップします。セットアップは、アプリケーションが使用しているレールのバージョンによって異なります。

rails generate simple_captcha
rake db:migrate

使用法

コントローラーベース

ファイル「app/controllers/application.rb」に次の行を追加します</p>

ApplicationController < ActionController::Base
  include SimpleCaptcha::ControllerHelpers
end

フォームタグ内のビューファイルで、このコードを追加します

<%= show_simple_captcha %>

コントローラーのアクションで、それを次のように認証します

if simple_captcha_valid?
  do this
else
  do that
end

モデルベース

フォームタグ内のビューファイルで、このコードを追加します

<%= show_simple_captcha(:object=>"user") %>

モデルクラスにこのコードを追加します

class User < ActiveRecord::Base
  apply_simple_captcha
end

FormBuilder ヘルパー

<%= form_for @user do |form| -%>
  ...
  <%= form.simple_captcha :label => "Enter numbers.." %>
  ...
<% end -%>

キャプチャによる検証

注: @user.valid? キャプチャ コードは検証されません。

@user.valid_with_captcha?

キャプチャで保存

注: @user.save は正常に機能しますが、キャプチャ コードは検証されません。

@user.save_with_captcha

Formtastic 統合

SimpleCaptcha は、Formtastic を使用して追加するかどうかを検出します

“SimpleCaptcha::CustomFormBuilder”.

<%= form.input :captcha, :as => :simple_captcha %>

オプションと例

オプションを見る

*label* - provides the custom text b/w the image and the text field, the default is “type the code from the image”

*object* - the name of the object of the model class, to implement the model based captcha.

*code_type* - return numeric only if set to ‘numeric’

グローバル オプション

image_style - provides the specific image style for the captcha image.

プラグインで利用できる 8 つの異なるスタイルが…</p>

  1. 単に_青
  2. 単に赤
  3. 単に_緑
  4. チャコールグレー
  5. embosed_silver
  6. 全部黒
  7. 歪んだ_黒
  8. ほとんど見えない

デフォルトのスタイルは「simply_blue」です。'random' を指定して、ランダム イメージ スタイルを選択することもできます。

distortion - handles the complexity of the image. The :distortion can be set to ‘low’, ‘medium’ or ‘high’. Default is ‘low’.

*「rails_root/config/initializers/simple_captcha.rb」を作成*

SimpleCaptcha.setup do |sc|
  # default: 100x28
  sc.image_size = '120x40'

  # default: 5
  sc.length = 6

  # default: simply_blue
  # possible values:
  # 'embosed_silver',
  # 'simply_red',
  # 'simply_green',
  # 'simply_blue',
  # 'distorted_black',
  # 'all_black',
  # 'charcoal_grey',
  # 'almost_invisible'
  # 'random'
  sc.image_style = 'simply_green'

  # default: low
  # possible values: 'low', 'medium', 'high', 'random'
  sc.distortion = 'medium'
end

独自のスタイルを追加できます:

SimpleCaptcha.setup do |sc|
  sc.image_style = 'mycaptha'
  sc.add_image_style('mycaptha', [
      "-background '#F4F7F8'",
      "-fill '#86818B'",
      "-border 1",
      "-bordercolor '#E0E2E3'"])
end

image_magick がインストールされているパスも指定できます。

SimpleCaptcha.setup do |sc|
  sc.image_magick_path = '/usr/bin' # you can check this from console by running: which convert
end

tmp ファイルを保存するパスを指定できます。/tmp (デフォルト ディレクトリ) にアクセスできない場合に便利です。

SimpleCaptcha.setup do |sc|
  sc.tmp_path = '/tmp' # or somewhere in project eg. Rails.root.join('tmp/simple_captcha').to_s, make shure directory exists
end

SimpleCaptcha DOM 要素の CSS を変更するには?

このファイルで、必要に応じて SimpleCaptcha DOM 要素の CSS を変更できます。

*/app/views/simple_captcha/_simple_captcha.erb*

ビューの例

コントローラーベースの例

<%= show_simple_captcha %>

<%= show_simple_captcha(:label => "human authentication") %>

モデルベースの例

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

モデル オプション

message - provides the custom message on failure of captcha authentication the default is “Secret Code did not match with the Image”

add_to_base - if set to true, appends the error message to the base.

モデルの例

class User < ActiveRecord::Base
  apply_simple_captcha
end

class User < ActiveRecord::Base
  apply_simple_captcha :message => "The secret Image and code were different", :add_to_base => true
end
于 2013-02-12T11:41:23.843 に答える
3

まあ、ReCaptcha がその仕事をしてくれますし、オンラインにはたくさんのチュートリアルがあります。

ただし、コントローラーに正しい「def create」(create メソッド) を記述して、フォーム内のものをすべて渡し、同時に Recaptcha を検証する必要があります。するとうまくいきます。

それには1つの小さな問題がありました。ReCaptcha をフォームに挿入した後、フォームの検証が機能しなくなりました。ただし、モデル ファイルに挿入された簡単なコードで修正できます。

after_validation :on => :create 

(:create = はコントローラーの「def create」メソッドです)。最初にフォームを検証し、次に Recaptcha を検証するようにフォームに強制します。

于 2012-08-24T18:32:18.017 に答える
0

レールのreCAPTCHAは、機能の面で優れています。ただし、XHTML検証が必要な場合は、実行してください。このプラグインは検証しません(そしておそらく決して検証しません)。サイト全体で1つのページだけが検証されないのは恥ずかしいと思います-それはreCAPTCHAのあるページです。他に選択肢があれば、私はそれを取ります。

于 2010-06-23T02:17:38.477 に答える
0

Railsアプリケーションにはambethia recapchatを使用しました。それは他のものよりも簡単です

于 2009-12-07T13:13:26.963 に答える
0

PHP プロジェクトの 1 つで Recaptcha を使用しました。http://recaptcha.net/
サイトによると、Ruby 用のプラグイン ( http://recaptcha.net/resources.html ) もあります。最初の ruby​​ リンクは機能しませんでしたが、次のリンクは引き続き機能します。http://svn.ambethia.com/pub/rails/plugins/recaptcha/ チェックしてみてください。

于 2009-12-07T10:34:19.487 に答える
0

検証され、reCAPTCHA と (ほぼ) 同じくらい使いやすい CAPTCHA を求めている場合は、私の SlideCAPTCHA を試してみてください。(数日前に書いたので、実際の使用でいくつかのテストが必要です。) 展開プロセスは reCAPTCHA プラグインに基づいていますが、CSS でスタイルを設定できます。

ただし、Ruby/GD が必要なので、まだ GD を持っていない場合、GD が簡単にインストールして使用できるとは約束できません。

于 2010-07-08T12:54:42.153 に答える