サイトの入力フォームにreCAPTCHA v3 を導入する

スパムメールを防止するためのGoogleのサービス、reCAPTCHA v3の基本的な仕組みと使い方をメモします。

reCAPTCHAとは?

reCAPTCHAはWebサイトのお申し込みフォームなどでよく見かける「私はロボットではありません」のチェックボックスや、文字や画像を選ばせてスパムによる不正な投稿を防ぐサービスです。

本記事で紹介するv3のバージョンから、スパムメールであるかどうかを自動で判別する仕組みとなり、投稿者が先述のような操作を行わずに不正な投稿を防止できるようになっています。

サイトへの導入手順

キーを取得する

Googleアカウントを使用してreCAPTCHAのサイトからサイトキーとシークレットキーという専用のパスワードのようなものを取得しておきます。

公式ページ
https://developers.google.com/recaptcha/docs/v3
hereのリンクから管理画面へ移動する。

サイトのドメインを登録、v3を選択、規約にチェックを入れて送信。

サイトキーとシークレットキーが取得されますので控えておきます。

 

フォームの実装とトークンの取得

入力フォームへreCAPTCHAの組み込みを行います。

(上記内、取得したサイトキーを埋め込んでください。)
実装を行うとページ内右下のあたりにreCAPTCHAのアイコンが表示されるようになります。

サイトキーを使用してgoogleの専用サーバが発行する認証用のアクセストークンを取得し、入力情報と共に送信します。

こちらのサンプルでは送信ボタンをクリックしたタイミングでトークンを発行しています。
(仕様によりトークンの有効時間は2分間となっているようです)

サーバーサイドの実装

リクエストを受け取るサーバー側では取得したシークレットキーとフォームから送信されたアクセストークンを元にgoogleの専用サーバーへスパム判定の認証依頼を送り、JSON形式でレスポンスされる認証の結果からsuccessの値を参照します。

(認証結果)

PHPを使用したサンプル

(上記内、取得したシークレットキーを使用)
認証結果をfile_get_contents関数で取得しています。

Follow me!