Google reCAPTCHAを触ってみた。
はじめに
業務でGoogle reCAPTCHAを触る機会があったので備忘録としてまとめておきます。
Google reCAPTCHAとは
Google reCAPTCHAはbotによるwebフォームへの悪質なアクセスを防ぐ機能です。Googleが無償で提供しているのもあり、色々なサイトで見かけます。
2022年5月4日現在ではVersion3まで出ており、それぞれの特徴は以下のようになっています。
v1
機械では読みにくい文字列を並べてユーザに入力してもらう。v2
チェックボックスをクリックし、怪しそうな場合は写真を表示して「信号機」をクリックしてください、のように試される。v3
ユーザのサイト操作を監視し、機械学習によってbotかどうか判定
ユーザがreCAPTCHAに対して何かしらやる必要がなくなった。
v2まではユーザの入力する手間が増え、セキュリティ的には便利であるもののユーザーフレンドリーではないと言われ続けてきました。
v2を実装してみた(フロント側のみ)
備忘録として軽く実装もしておきましょう。
最近だとv3が主流ですが、とりあえずv2を実装してみました。
以下は手順です。
1. reCAPTCHAへの登録とサイトキー, 秘密キーの取得
Google reCAPTCHA の使い方(v2/v3)
2. formタグ内へreCAPTCHA生成のhtmlを入れる(1で取得したサイトキーをdata-sitekey
属性へ追加)
<html> <head> <title>reCAPTCHA demo: Simple page</title> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <form action="?" method="POST"> <div class="g-recaptcha" data-sitekey="サイトキー"></div> <br/> <input type="submit" value="Submit"> </form> </body> </html>
reCAPTCHA v2 | Google Developers
3. フロントからpostでg-recaptcha-response
キーが返ってくるのでバックエンド側で1で取得した秘密キーと合わせてhttps://www.google.com/recaptcha/api/siteverify
へpostで送信する
Verifying the user's response | reCAPTCHA | Google Developers
4. 3のレスポンスがsuccessなら認証成功。
実際の動作
※バックエンド側は構築が面倒だったので普通にpostしてチェックするのみなので一旦省略しています。
チェックを入れて・・・
「Submit」ボタンを押すとpostでg-recaptcha-response
キーが送られているのが分かります。
(画面は用意していないので「動作していない~」的な画面になっていますが...w)
おわりに
気が向いたらv3の実装も軽く見ておきたいです!