Подтвердить что ты не робот

Рекомендации по captcha на Ruby on Rails

Я хотел бы реализовать капчу в проекте Rails для отправки формы, но я не уверен, что с ним делать. Я склонен к простоте реализации и надежности при использовании, поскольку он слишком сложный, поскольку мое приложение не требует слишком высокого уровня безопасности.

У кого-нибудь есть рекомендации?

4b9b3361

Ответ 1

Самый простой способ добавить CAPTCHA к вашему Rails-приложению - использовать 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. Дальнейшее чтение:

Ответ 2

Установка

Добавьте в свой 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"

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 -%>

Проверка с помощью captcha

ПРИМЕЧАНИЕ: @user.valid? будет по-прежнему работать как следует, он не будет проверять код captcha.

@user.valid_with_captcha?

Сохранение с помощью captcha

ПРИМЕЧАНИЕ. @user.save все равно будет работать так, как должен, он не будет проверять код captcha.

@user.save_with_captcha

Форматическое интегрирование

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.

Существует восемь различных стилей, доступных с плагином, как...

  • simply_blue
  • simply_red
  • simply_green
  • charcoal_grey
  • embosed_silver
  • all_black
  • distorted_black
  • almost_invisible

Стиль по умолчанию - 'simple_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

Как изменить CSS для элементов DOM SimpleCaptcha?

Вы можете изменить CSS элементов DOM SimpleCaptcha в соответствии с вашими потребностями в этом файле.

*/приложение/просмотров/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

Ответ 3

Ну, ReCaptcha выполнит эту работу, и в Интернете есть много учебников.

Однако вам нужно написать правильное "def create" (создать метод) в вашем контроллере, которое будет передавать все, что есть в вашей форме, и одновременно проверять Recaptcha. Тогда это будет хорошо работать.

У него была небольшая проблема. После того, как я вставил ReCaptcha в мою форму, проверка формы перестала работать. Однако его можно исправить простым кодом, вставленным в файл модели:

after_validation :on => :create 

(: create = - это метод "def create" в вашем контроллере). Это заставит форму сначала проверить форму, а затем подтвердить Recaptcha.

Ответ 5

Я использовал ambetia recapchat для приложения rails. это наиболее легко, чем другие

Ответ 6

reCAPTCHA для рельсов отлично, с точки зрения функциональности. Однако, если вам нужна проверка XHTML, ПРОПУСТИТЕ! Этот плагин не проверяет (и, вероятно, никогда не будет). Мне неловко, что только одна страница на моем сайте не проверяется - это страница с reCAPTCHA. Если бы был ЛЮБОЙ другой выбор, я бы взял его.

Ответ 7

если вы после CAPTCHA, который проверяет и (почти) так же прост в использовании, как reCAPTCHA, пожалуйста, попробуйте мою SlideCAPTCHA. (Написал это несколько дней назад, нуждается в некоторых тестах в реальном использовании.) Я основал процесс развертывания в плагине reCAPTCHA, но вы можете создать его с помощью CSS.

Он действительно требует Ruby/GD, поэтому, если у вас еще нет GD, я не могу обещать, что GD прост в установке и использовании!