Server

【Google Invisible reCAPTCHA】Railsサイトにキャプチャ導入

投稿日:2018年3月5日 更新日:

はじめに

こんにちは、最近休みなく仕事をいただいており、ブログへの投稿が久しぶりになってしまいました。今後は、ちゃんと定期的に投稿できるようにしたいと思います。

さて、今回はWebサイトのログインフォームやコンメント投稿画面などでロボットによるアクセスかどうかを判定し、排除するための機能である、CAPTCH(キャプチャ)に関しての投稿です。

CAPTCHも色々と実装方法はあると思いますが、今回はGoogleのInvisible reCAPTCHをRailsプロジェクトに組み込む方法を詳細させていただきます。

reCAPTCHAとは

まず、「CAPTCH」とは「Completely Automated Public Turing test to tell Computers and Humans Apart」の略で、直訳すると「コンピュータと人間を分かち合うために完全に自動化された公的チューリングテスト」となります。

Webの世界であれば、Webサイトにアクセスする人間とロボットを判別するためのシステム・仕組みのことと理解しても良いのではないでしょうか。

従来から方式では、ログインやコメント投稿時にロボットでは判別困難な画像の文字をWebサイト訪問者に入力させるなどをして、人間とロボットを判別しています。

Googleの提供する「reCAPTCH」は、従来の方式ではなく、画像を選択させる方式や単にチェックボックスをチェックさせるだけで判別ができます。

また、2017年からは更に進化して、「Invisible reCAPTCHA」というものも提供をはじめています。これは、Webサイト訪問者及びユーザに文字入力、画像選択、チェックボックスのチェックすらもさせることなく、ロボット判別ができるというものです。

Site keyとSecret keyの取得

先ずは、GoogleのreCAPTCHAのサイトでreCAPTCHAを利用するためのkeyを取得します。サイト右上の「Get reCAPTCHA」をクリックして、Googleアカウントでログインをします。そうすると下記のような画面が表示されますので、Invisible reCAPTCHAを選択し、reCAPTCHAを導入するサイトのドメインを入力したら、利用規約にチェックを入れて登録します。そうすると登録後の画面で、Site keyとSecret keyが取得できますので、メモしておきます。

recaptcha

Rails gemの導入

gemを使わなくてもWebサイトに導入することは難しくありませんが、今回はRailsを利用しているため、今回はこちらのgemを導入して簡単にWebサイトに組み込みたいと思います。

先ず、Gemfileに下記を追記して、 bundle install --path vendor/bundle を実行します。

次にinitializersなどで先ほど取得したkeyを設定します。今回はそのまま記載していますが、githubなどにpushする場合は、keyは環境変数などにしてそのままpushしない方が良いでしょう。また、ローカルの開発環境などでは、Google reCAPTCHAで登録したドメインと異なることになると思いますので、development環境では無効にしておきます。

サイトへの組み込み

例として、deviseの新規登録画面に組み込んでみようと思います。

先ず、View側ですが、formタグ内にsubmitのかわりに invisible_recaptcha_tags を組み込むだけです。

上記を組み込むと下記の画像がページ内の右下に表示されます。

次にコントローラ側での処理ですが、deviseの場合はdeviseのコントローラを継承したクラスで処理をさせる必要がありますので、routes.rbを下記のように修正します。

そして、deviseのコントローラを継承したregistrations_controller.rbで登録時に検証を行います。verify_recaptchaのメソッドをコールし、trueが返却されればロボットではないと判定されたことになりますので、登録処理を継続させます。

さいごに

Webサイト訪問者やユーザの方に追加の入力や操作を強いることなく、ロボット判定ができるというのは良いと思いました。また、導入も非常に簡単なので、ぜひ皆さんのサイトでも試していただければと思います。

page_footer_300rect




page_footer_300rect




-Server
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

同じレコードがないときだけインサートする!

はじめに あるアイテムを持っていない人だけ、別のアイテムをあげたい! もしくはその逆で、あるアイテムを持っている人に追加でアイテムをあげたい! そういうことってないでしょうか? 先日、僕がそのような状 ...

[WordPressのSEO対策]PageSpeed Insightsのスコアを上げる方法

1 はじめに2 現状のスコアと改善点を確認する3 ブラウザキャッシュを活用する4 圧縮を有効にする5 HTML/CCS/JavaScriptを縮小する6 画像を最適化する7 レンダリングをブロックして ...

Python(bottle)をApacheで動かす

1 はじめに1.1 環境2 サーバーの立ち上げ3 Pythonのインストール3.1 IUS Community Project の yum リポジトリ3.2 インストール4 Apacheのインストール ...

icon

ブログ運営で最も気をつけること(障害報告)

1 お詫び2 障害報告書2.1 障害内容2.2 障害期間2.3 障害の原因2.4 障害の長期化の原因2.5 詳細3 対応3.1 決済に使用するクレジットカードを変更する3.2 一つ前のOSバージョンで ...

aws

Amazon EC2を使ってみる

1 はじめに2 事前準備2.1 ルートアカウントのMFAを有効化2.2 個々のIAMユーザの作成(及びグループの作成)2.3 IAMユーザのMFAを有効化2.4 IAMパスワードポリシーの適用3 EC ...

page_side_300rect

アプリ情報

私たちは、目標を達成したい方を応援する、TODOアプリもリリースしております。
下記のアイコンから無料でダウンロードできます。

フォロー

follow us in feedly
2018年3月
« 2月 4月 »
 123
45678910
11121314151617
18192021222324
25262728293031

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。