Ruby on Rails 上の Google reCaptcha で Web アプリケーションを保護する

「スパム」は、Web アプリケーション所有者にとって最も恐ろしい言葉の 1 つかもしれません。特にユーザーが作成したコンテンツが多数あるアプリケーションの場合、これに対処するのは悪夢になる可能性があります。スパマーを寄せ付けないようにするために、reCaptcha と呼ばれる Google の無料サービスを使用することができます。 Web サイトをスパムや悪用から保護し、ユーザーがキャプチャを解決することなく認証できるようにするサービスである Google reCaptcha は、フォーム送信の自動化を防止することで、サービス拒否攻撃からアプリケーションを保護します。既存の画像キャプチャに対する優れたソリューションである Google reCaptcha は使いやすく、高度なセキュリティ機能が満載です。 reCaptcha は、高度なリスク分析エンジンを使用して、自動ボットがアプリケーションに対してスパム行為を行うのを防ぎます。さらに、以前の画像キャプチャよりもはるかにユーザーフレンドリーです。 Google reCaptcha をアプリケーションに追加する前に、次の手順に従う必要があります: 1) 資格情報を取得する 2) recaptcha タグを追加する 3) 検証を処理するには、recaptcha クラスを作成する 4) 登録コントローラーで verify_recaptcha メソッドを追加する 設定 ステップ1:- gem ファイルに以下を追加します: gem "recaptcha", :require => "recaptcha/rails" ステップ2:- http://developers.google.com にログインし、Gmail アカウントにサインインして「recaptcha」を検索します。クリック "API キーのサインアップ" リンク。シークレットキーとサイトキーを確認します。名前自体が示すように、サイト キーは Google への認証に使用される公開キーであるのに対し、秘密キーはより安全な場所に保管する必要があります。サイト名を Google アカウントに登録して、アプリケーションで後で使用する公開キーと秘密キーを取得します。登録が完了すると、公開キーと秘密キーを取得します。クライアント側から、公開キーが再キャプチャ サービスに送信され、新しいキャプチャが要求されます。秘密キーはサーバー側で適用され、正しい値が入力されているかどうかが検証されます。次に、reCAPTCHA API キーを登録し、それを環境設定ファイルに追加します: # これをdevelopment.rb とproduction.rb に入れます。 ENV_RECAPTCHA_PUBLIC_KEY= 'あなたの公開鍵' ENV_RECAPTCHA_PRIVATE_KEY= 'あなたの秘密鍵' ステップ 3:- recaptcha パラメータを設定するには、config/initializers に recaptcha.rb という名前のファイルを作成します。 Recaptcha.configure do |config| config.public_key = 'ENV_RECAPTCHA_PUBLIC_KEY' config.private_key = 'ENV_RECAPTCHA_PRIVATE_KEY' config.proxy = 'http://www.google.com/recaptcha/api/verify' 終了 ステップ4:- ビュー Captcha Gem は、実際のキャプチャ ボックスのレンダリングに役立ちます。ビュー内のキャプチャを表示したい位置に以下を入力するのと同じくらい簡単です: <%= raw recaptcha_tags %> SSL を使用している場合は、代わりにこれを使用してください: <%= recaptcha_tags :ssl => true %>, SSL オプションにより、https リクエストが recaptcha サービスに確実に送信されます。 ステップ5:- コントローラ
Captcha Gem は、送信が正しいかどうかを確認するために reCaptcha API サーバーに送信する別のヘルパー メソッドを提供します。そうでない場合、メソッドは true を返します。そうでない場合は、再キャプチャが間違っているというカスタム エラー メッセージをモデル インスタンスに追加します。以下は、コントローラーの作成アクションに含まれる可能性のある基本コードです。 - Device コントローラーで、app/controllers/registrations_controller.rb、次のコードを挿入します: require 'recaptcha.rb' before_action :verify_recaptcha, Only: [: create] def verify_recaptcha 応答 = Recaptcha.verify(params) session[:sign_up] = params[:user].excel(:password, :password_confirmation, :remoteip) if response.code == 200 if response['success'] flash [:notice] = “再キャプチャの検証が成功しました。” else redirect_to new_user_registration_path(user: params[:user])、アラート: 「再キャプチャ検証エラー」 end else redirect_to new_user_registration_path(user: params[:user])、アラート: 「HTTP 接続エラー」。終わりの終わり
検証が失敗した場合はサインアップ フォームに事前に入力できるため、session[:sign_up] は保持されます。

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese