今回はBOT判別を行うシステム「reCAPTCHA」の導入方法を解説したいと思います。ユーザー登録でよく見るBOT判別を導入して、セキュリティをより強固にしていきましょう。
reCAPTCHAとは
reCAPTCHAとは、Googleが提供する送信者のBOT判別を行うシステムです。導入することで、悪質なスパム(アクセス)からWebサイトを守ってくれます。
皆さんもユーザー登録を行う際などに、以下の画像のような認証をしたことがありますよね。これがreCAPTCHAによるBOT判別です。

ボットとは、コンピュータを外部から遠隔操作するためのコンピュータウイルスです。ボットに感染したコンピュータは、ボットネットワークの一部として動作するようになります。そして、インターネットを通じて、悪意のあるハッカーが、常駐しているボットにより感染したコンピュータを遠隔操作できるようになってしまいます。
reCAPTCHAの導入
まずはreCAPTHCHAを導入するための設定を行っていきましょう。まずは以下のリンクからユーザー登録をします。
↓ ↓ ↓
遷移したページの右上に「Admin console」があるのでクリックします。

タイプ(なんでも良い)・ドメイン・メールアドレスなど、必要な情報を入力をします。以下の画像のように入力していきましょう。


今回はローカルでのみreCAPTCHAを導入するため、ドメインに「local」を記述します。
全ての入力が完了し送信ボタンを押すと、サイトキーとシークレットキーが発行されます。この値を環境変数に設定するため、大事な情報になります。メモ帳などにコピーしておきましょう。

reCAPTCHAの実装
では実際にreCAPTCHAをアプリケーションに実装してみましょう。以下の手順でミニアプリを作成しながら実装を進めていきます。
まずは新しくアプリケーションを立ち上げましょう。今回はrecaptchaという名前でアプリケーションを作成します。
↓ ターミナル
$ rails _5.2.3_ new recaptcha -d mysql --skip-bundle
Gemfileを以下のように編集し、「bundle install」を実行しましょう。
↓ Gemfile
変更前) gem 'rails', '~> 5.2.3'
変更後) gem 'rails', '= 5.2.3'
↓ ターミナル
$ bundle install
次にデータベースを作成します。
↓ ターミナル
$ rails db:create
では次からreCAPTCHAを実装するための準備に入っていきます。GemfileにreCAPTCHAを記述し、「bundle install」を実行しましょう。
↓ Gemfile
gem "recaptcha", require: "recaptcha/rails"
↓ ターミナル
$ bundle install
続いてconfig/initializersのディレクトリに、recaptcha.rbというファイルを作成します。
↓ ターミナル
$ touch config/initializers/recaptcha.rb
先ほどコピーしたサイトキーとシークレットキーをrecaptcha.rbに貼り付けましょう。
↓ recaptcha.rb
Recaptcha.configure do |config|
config.site_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
config.secret_key = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
end
次に環境変数の設定をしていきます。ターミナルのrecaptchaディレクトリで以下のコマンドを打ち、credentials.ymlを編集しましょう。
↓ ターミナル
$ EDITOR="vim" bin/rails credentials:edit
開いたvimにサイトキーとシークレットキーを追記します。
↓ vim
recaptcha_site_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
recaptcha_secret_key: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
「i」でインサートモード(入力モード)、「esc」→「:wq」で記述内容を保存できます。
最後にコントローラーとビューを作成します。
↓ ターミナル
$ rails g controller recapcha index
↓ index.html.erb
<%= recaptcha_tags %>
トップページにBOT判別を表示させたいためroutes.rbを以下のように編集しましょう。
↓ routes.rb
Rails.application.routes.draw do
root 'recapcha#index'
end
これでreCAPTCHAの実装は完了です。実際にサーバーを立ち上げ、BOT判別が表示されるか確かめてみましょう。

まとめ
- reCAPTCHAとは、Googleが提供する送信者のBOT判別を行うシステムのこと
- reCAPTCHAを使用するには、サイトキーとシークレットキーを環境変数に設定する
今回はBOT判別を行うシステム「reCAPTCHA」の導入方法を解説しました。簡単にセキュリティ対策ができるシステムなので、機会があればぜひアプリケーションに導入してみてください。