仕組み
reCAPTCHAにサイトを登録する
まず以下のページでreCAPTCHAに設置するサイトを登録する。
登録すると Site KeyとSecret Keyが発行される。
https://www.google.com/recaptcha/admin/create
クライアント側
https://developers.google.com/recaptcha/docs/display
サーバーサイド側
https://developers.google.com/recaptcha/docs/verify
大まかな流れ
reCAPTCHAを通るとトークンが発行され、
それをフォームデータと共にサーバー側に送り、
Secret KeyとトークンをGoogleサーバーに送り認証してもらう。返ってきた結果(true/false)で処理する
・参考イメージ1
・参考イメージ2(InvisibleタイプのreCAPTCHA)
[参考]
実装例
php
perl
注意点
サーバー側の実装をせずにクライアント側だけ実装した時の問題点
クライアント側でデータを操作されて、reCAPTCHAを通さずに、Submitできてしまう。
(ユーザーがreCAPTCHAによるキャプチャ認証を通して発行したトークンかどうかを確認できない)
[参考]
サーバー側の実装をクライアント側にした時の問題点
データを容易に操作出来たり、Secret Keyがむき出しなるなど現実的ではない
Google公式のドキュメントでもクライアント側とサーバー側の実装を分けているのはこういった理由があるからだろうと思う。
[参考]