Rails

【Rails】BOT判別を行うシステム「reCAPTCHA」を導入する方法と手順

Rails

 

今回はBOT判別を行うシステム「reCAPTCHA」の導入方法を解説したいと思います。ユーザー登録でよく見るBOT判別を導入して、セキュリティをより強固にしていきましょう。

ローカルのみであれば10分程で作業は完了します。

reCAPTCHAとは

reCAPTCHAとは、Googleが提供する送信者のBOT判別を行うシステムです。導入することで、悪質なスパム(アクセス)からWebサイトを守ってくれます。

皆さんもユーザー登録を行う際などに、以下の画像のような認証をしたことがありますよね。これがreCAPTCHAによるBOT判別です。

reCAPTCHA

ボットとは、コンピュータを外部から遠隔操作するためのコンピュータウイルスです。ボットに感染したコンピュータは、ボットネットワークの一部として動作するようになります。そして、インターネットを通じて、悪意のあるハッカーが、常駐しているボットにより感染したコンピュータを遠隔操作できるようになってしまいます。

reCAPTCHAの導入

まずはreCAPTHCHAを導入するための設定を行っていきましょう。まずは以下のリンクからユーザー登録をします。

↓ ↓ ↓

 

遷移したページの右上に「Admin console」があるのでクリックします。

reCAPTCHA登録

 

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

reCAPTCHA登録 reCAPTCHA登録

今回はローカルでのみreCAPTCHAを導入するため、ドメインに「local」を記述します。

 

全ての入力が完了し送信ボタンを押すと、サイトキーとシークレットキーが発行されます。この値を環境変数に設定するため、大事な情報になります。メモ帳などにコピーしておきましょう。

reCAPTCHA登録

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

まとめ

  • reCAPTCHAとは、Googleが提供する送信者のBOT判別を行うシステムのこと
  • reCAPTCHAを使用するには、サイトキーとシークレットキーを環境変数に設定する

 

 

今回はBOT判別を行うシステム「reCAPTCHA」の導入方法を解説しました。簡単にセキュリティ対策ができるシステムなので、機会があればぜひアプリケーションに導入してみてください。