2017-03-18 15 views
0

私は以下の例を使用して自分のウェブサイトにReCaptchaを構築しています。 クライアントサイトとサーバーサイトでこれをどのように確認することができますか。 ユーザーがクライアント側のチェックボックスをオンにしてサーバーサイトをチェックしていないことを確認するだけで十分ですか? また、ユーザーがキャプチャを確認できなかった回数をカウントする必要があります。クライアント側とサーバー側でrecaptchaを確認する方法

<html> 
    <head> 
    <title>reCAPTCHA demo: Explicit render after an onload callback</title> 
    <script type="text/javascript"> 
     var onloadCallback = function() { 
     grecaptcha.render('html_element', { 
      'sitekey' : 'your_site_key' 
     }); 
     }; 
    </script> 
    </head> 
    <body> 
    <form action="?" method="POST"> 
     <div id="html_element"></div> 
     <br> 
     <input type="submit" value="Submit"> 
    </form> 
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" 
     async defer> 
    </script> 
    </body> 
</html> 

答えて

0

新しい非表示のrecaptchaを使用する場合は、単に[送信]ボタンにリンクするだけです。ユーザーがチェックボックスをオンにしているかどうかをテストする必要はありません。

お客様常には、サーバー側でrecaptchaを確認する必要があります。賢いボットは、クライアント側で何かを偽造することができます。ダンボールのボットからだけ防御したいのですか?

recaptcha APIは、試行回数を報告しません。あなたはこれをGoogleに信頼させるだけです。 「すべての画像を選択」の課題のいくつかはあいまいであり、いくつかの試行が必要です。

クライアント側でのreCAPTCHAを確認する方法
+0

サーバー側でReCaptchaを確認するにはどうすればよいですか? –

+0

'$ s = 'あなたの秘密'; $ r = $ _POST ['g-recaptcha-response']; $ v = file_get_contents( "https://www.google.com/recaptcha/api/siteverify?secret=$s&response=$r"); echo json_decode($ v) - >成功? 'PASS': 'FAIL'; ' –

0

あなたのターゲットHTML要素に任意のデータ - *属性を渡していないので、あなたはまだgrecaptcha.render() APIオプションのパラメータとして渡すためのオプションを持っています。 sitekeyと一緒にcallback: function() {..}に渡すことができます。コールバック関数は、ユーザーが正常に検証されるたびに呼び出されますが、ユーザーが検証チャレンジに失敗した回数を知る方法はありません。

ユーザーが検証されているかどうかをクライアント側でプログラムで検証する別の方法は、grecaptcha.getResponse() apiを使用する方法です。このAPIがゼロ以外の長さの文字列トークンを返す場合、これはユーザーが確認されたことを意味します。ところで、このapiから返されるトークンは、フォームを送信するときにサーバーに送信されるものと同じです。フォームを投稿するajaxの方法に切り替える場合は、心に留めておいてください。サーバー側でのreCAPTCHAを確認する方法

送信されたフォームは、その有効性を確認するためにreCAPTCHAの検証サーバに送信する必要がg-recaptcha-response POSTパラメータを持つ必要があります。 Tomは既に、PHPの答えをコメントで確認する方法を公開しました。

は、私が唯一のクライアント側の検証に依存することができます:

ありませんあなたがすることはできません。 recaptcha検証サーバーでクライアントから送信されたトークンを検証する必要があります。それは、サイドのjavascriptは簡単に偽陽性を返すためにハイジャックされることができます。悪意のあるボットは、recaptchaスクリプトのAPIメソッドを上書きし、独自の値を返します。したがって、クライアントが送信したトークンが有効であることを、recaptcha検証サーバーで確認する必要があります。

関連する問題