2017-08-15 6 views
0

Q1 - 私はreCaptchaのドキュメントを読んでいて、さまざまなフォーラムのケースを見てきましたが、APIコールはまったく経験していません。カスタムコンタクトフォームにキャプチャを追加しようとしていますが、検証のために情報を送信する方法と場所、そして受信する方法と場所を把握しようとしているので、天気を知っているかどうか、ユーザーが確認されていません。クロージングヘッド前:(なぜそれがキャプチャによって生成されたトークンを検証する必要がある、それはあなたがパズル/答えは解決した天気を教えてくれたりすることができないことを十分ていない側の質問??)キャプチャを確認する

タグ:私のフォームの

<script src='https://www.google.com/recaptcha/api.js'></script> 

終了:

私は、文字列/ Iが呼ぶときに、トークン正解によって生成さを見ることができます今

grecaptcha.getResponse(); 

(私はそれを理解したように)私は私がはまり込むところであるトークン/この文字列を確認する必要があります。

URL: https://www.google.com/recaptcha/api/siteverify 
METHOD: POST 

DOCS:https://developers.google.com/recaptcha/docs/verify

私はjQueryとバニラと比較的まともですJSしかし、それはAPI呼び出しになると私はほとんど経験がないので、これはドキュメントのこの時点で、私はAPIコール(検証のための)、APIコールの作成場所テンプレートファイルから、3 - 応答を戻す方法、または応答が戻ってくる方法。

私はBigcommerceストアを使用していますが、GoogleのreCaptchaのドキュメントは、この手順がサーバー側で実行されている(またはそうでなければならない)いくつかの異なる分野で言及されています。私はかなり変更することができるテンプレートファイルに制限されていることを知っている - 私はHTML/CSS/JSファイルを表示して変更することができますが、私はPHPへのアクセス権がありません。

正しい方向への助けやプッシュは大変感謝しています。この時点で、私は同じ文書(Googleや他のもの)やフォーラムのケースを見つけて読んだり読んだりしようとしています。ありがとうございました。

+0

こんにちはTron、bcは既にcaptchaをネイティブにサポートしていますので、自分で実装する必要はありません。ページを作成する際に表示設定にオプションがあります(https://support.bigcommerce.com/articles/Public/Display-Settings)。この設定の利用方法の詳細については、直接連絡を取っておくと便利です。 Best of Luck –

+0

また、すべてのJS Webリクエストは、正式に「XMLHttpRequest」と呼ばれるものに沸きます。 jQueryのAjax関数は、Web要求をより簡単に実行し、数行のコードに短縮します。基盤となる概念をよりよく理解するためには、非同期実行、ソフトウェア割り込み、JSイベントループの調査は重要ですが、 –

答えて

-1

あなたが受け取った答えがreCapthaサーバーから来たものであること、ユーザーがロボットではないこと、成熟していないこと、一度も使用されていないことを確認するreCaptcha確認

これは、アプリケーションを実行しているサーバーにとって本当に重要なことです。さらに、処理されるフォームを受け入れるか拒否するためにフォームを表示するクライアントです。

これは、検証がサーバー上で行われなければならない理由です。クライアントはセキュリティ保護されていない環境であり、サーバーはそれを信用できないようにすることができます。

さらに、検証には秘密のapiキーが必要です。秘密であるため、クライアントコードに埋め込むことはできません。

phpにアクセスできない場合や、検証を行うためにphpを追加できない場合は、reCaptchaを実装することはできません。一番下の行は、クライアントコード(ブラウザで実行しているJS、jQueryの)ビューのサーバー点から検証のいずれかの種類を行うには信頼できないということであるI

EDIT。

たとえば、ユーザーが0と9の間の2つのランダムな整数の合計の結果を入力するためのinput要素を実装するとします。非常に単純です。そこにあるいくつかの場所でJavaScriptコードで

:ブラウザの開発ツールを使用して

if(a + b === c){ 
    sendFormToServer(); 
}else{ 
    reject(); 
} 

誰もが)、「あれば」と直接sendFormToServer(呼び出しを回避できます。サーバーはそれを知る方法がありません。

+0

それは正しいです私は/変更/任意のPHPを追加することができません。reCaptcha以外に別のオプションがある場合は、私は間違いなくオープンになっています。応答を感謝します。 – Tron

+0

クライアント上でのみ動作するものはありません。私は私の答えに簡単な例を加えました。 – Juan

0

質問に1つずつお答えします。

クライアント側Captchaについては、hereを参照してください。Java Scriptの能力を考慮すると、クライアント側のキャプチャは安全ではありません。誰かがスクリプトの下に含まれると、Googleは ユーザーを検証します:reCAPTCHAのはの仕組み

  1. 。以下の書き込み

    https://www.google.com/recaptcha/api.js 
    

    は、最初にGoogleにデータを送信するフォームの属性と 応答がグラム-reCAPTCHAの応答という名前 属性を持つ現在のフォームの最終ポストに追加されます。

    <div class="g-recaptcha" data-sitekey="your_site_key"></div> 
    
  2. reCAPTCHAを検証する方法 Googleでこのg-recaptcha-responseを検証する必要があります。 [注:これは クライアントがキャプチャを経由せずに属性グラム-reCAPTCHAの応答 のための任意のランダムな値を送信することができますrequried becauesある]

    $verifyResponse = 
        file_get_contents('https://www.google.com/recaptcha/api/siteverify? 
        secret='.$YOUR_SECRET.'&response='.$_POST['g-recaptcha-response']) 
        /*allow_url_fopen must be ON if you want to use file_get_contents. 
        check it using phpinfo();*/ 
    
    
        file_put_contents("logfile", $verifyResponse, FILE_APPEND); 
        $responseData = json_decode($verifyResponse); 
    
        $register_result = 'Robot verification failed, please try again.'; 
        if($responseData->success) 
        { 
          $register_result = 'You are not a bot'; 
        } 
        else $register_result = 'You are a bot.'; 
    
  3. するCaptcha HTML/JS/CSSと reCAPTCHAのが動作しません。 PHPへのアクセス権がない場合は、あなたのために。

  4. Captchaとしてのパズル Captchaパズルも可能ですが、このようなキャプチャも利用できますが、サーバー側で処理されます。

関連する問題