フォームへのリキャプチャ実装
やったこと増えてきたのでマガジン化しました。
今回はリキャプチャV3を実装して、リキャプチャスコアによって処理を分けてみました。
リキャプチャの実装
以下記事を参考にまずはリキャプチャV3機能の実装を行いました。
スコアの取得と場合分け
リキャプチャスコアを取得するコードが参考記事に記載されていなかったため、スコア取得はGoogleのガイドを参考にしました。
リキャプチャ認証の結果は最終的に「$reCAPTCHA」に入っていることがわかったので、そこから、「score」の値を取得。
この結果によって、条件分岐させることで実装しました。
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['recaptchaResponse']);
$reCAPTCHA = json_decode($verifyResponse);
$score = $reCAPTCHA->score;
Site Verify Response
Make the request to verify the response token as with reCAPTCHA v2 or Invisible reCAPTCHA.
The response is a JSON object:Make the request to verify the response token as with reCAPTCHA v2 or Invisible reCAPTCHA.
{
"success": true|false, // whether this request was a valid reCAPTCHA token for your site
"score": number // the score for this request (0.0 - 1.0)
"action": string // the action name for this request (important to verify)
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"hostname": string, // the hostname of the site where the reCAPTCHA was solved
"error-codes": [...] // optional
}
やってみたら案外簡単に終わりました。
リキャプチャ認証は悪質な攻撃からサーバーを守る有効な手段なので未実装ならぜひやってみて欲しいなと思いました。
この記事が気に入ったらサポートをしてみませんか?