reCAPTCHA設定

  • 更新

reCAPTCHAとは、フォームへのスパム登録を防止する目的で、人間とbot(ロボット登録)を見分けるためにGoogle社がAPI形式で提供する機能です。
クライゼルでは、reCAPTCHA v3にのみ対応しています。

参考:Google ウェブマスター向け公式ブログ「reCAPTCHA v3 をご紹介します。Bot の活動を阻止する新しい方法」

reCAPTCHA設定を行ったフォームでは、フォームへのアクセスに対してその場でGoogleから判定結果となるスコア値が返ります。
クライゼルでは、そのスコア値を元に、あらかじめ設定された基準以下である値のアクセスのみ、アクセスを遮断します。

注意

  • reCAPTCHAのキー登録のためにはGoogleアカウントを取得する必要があります(無償で取得可能)。
    • reCAPTCHAが有効なフォームでは、フォームにアクセスした際の情報がGoogleへ送信されますので、ご留意ください。
  • reCAPTCHAの設定が誤っていると、正しく画面遷移できなかったり、reCAPTCHAの保護が働かないことがあります。
    • 設定時は必ずフォームの動作確認およびreCAPTCHA画面での状態・ログ確認をお願いします。
  • reCAPTCHAを設定しているフォームで、送信ボタンに「input type="image"」を使うと正しく動きません。「input type="submit"」を指定してください。
  • 確認画面に設置する送信ボタン("戻る"ボタンや"送信"ボタン)において、button要素で構成すると正常に動作しません。input要素でボタンを構成してください。
  • 既にJavascriptをフォームで利用している場合には競合する可能性があります。
    • 特に、確認画面のフォーム送信のタイミングでイベントを発生させるJavascriptとして、formタグのsubmitイベントやinput(type=submit)のclickイベントを設定している場合には正しく動作しません。
    • コンタクト機能と連携するために設置するJavascript(サンプルコード)は上記のsubmitイベントやclickイベントを利用しているため、正しく動作しません。
    • フォームsubmit時に実行するための方法として代替する方法については こちら でご紹介いたします。
  • 登録フォームにて入力画面から直接完了画面に遷移する場合など、特殊な画面遷移を行うフォームではreCAPTCHAは動作しません。
    • 確認画面から完了画面へ遷移する際にreCAPTCHAによるチェックが行われるため
    • 確認画面の省略、など
  • reCAPTCHAは標準仕様でのご提供となります。www.google.comへのアクセス制限をかけている国からは、アクセスできなくなる可能性がございます。
  • reCAPTCHAのご契約形態によっては費用が発生する場合がございます。

 

Googleサービス上にてreCAPTCHAのサイトキーとシークレットキーを発行する

操作手順

1 Googleのアカウントにログインした状態で、GoogleのreCAPTCHA v3の設定ページにアクセスします。
この時ご利用になるGoogleアカウントは、個人用のGoogleアカウントではなく、組織内で共有されているGoogleアカウントが望ましいと考えます。

『Google reCAPTCHA「サイトに reCAPTCHA を追加する」』

2 下記項目を設定します。

[ラベル] クライゼル用のreCAPTCHAであることがわかるようなお好きな名前をつけます。
[reCAPTCHA タイプ] 「reCAPTCHA v3」を選択します。
クライゼルではv3にのみ対応しています。
[ドメイン] クライゼルフォームのドメインを指定します。
クライゼルの標準ドメインは krs.bz です。
ただし、フォームバーチャルドメインをご利用の場合は、その利用ドメインを指定してください。

Googleサービス上にてreCAPTCHAのサイトキーとシークレットキーを発行する:手順2.jpg

 

[送信]をクリックします。

3 完了画面で、サイトキーとシークレットキーが発行されました。この情報をクライゼルに設定します。

[reCAPTCHAを追加する]完了画面

Googleサービス上にてreCAPTCHAのサイトキーとシークレットキーを発行する:手順3.jpg

クライゼルにreCAPTCHAのサイトキーとシークレットキーを登録する

クライゼルでreCAPTCHA機能を使用できるようにするための設定です。
この設定ができるのはシステム管理者と特権ユーザです。

操作手順

1 [システム]>[reCAPTCHA設定]を開き、[新規作成]ボタンをクリックします。

[reCAPTCHA設定]画面クライゼルにreCAPTCHAのサイトキーとシークレットキーを登録する:手順1.jpg

2 下記項目を設定します。

クライゼルにreCAPTCHAのサイトキーとシークレットキーを登録する:手順2.jpg

[reCAPTCHAキー名称] クライゼル管理画面上でreCAPTCHAのキーを区別するための名前をつけます。
[サイトキー] Google上で発行されたサイトキーの値を貼り付けます。
[シークレットキー] Google上で発行されたシークレットキーの値を貼り付けます。

[次へ→]をクリックし、確認画面で[実行]をクリックします。

3 完了画面が表示されます。
「戻る」をクリックすると、【reCAPTCHAキー一覧】に作成した内容が登録されていることが確認できます。

[reCAPTCHAを追加する]完了画面クライゼルにreCAPTCHAのサイトキーとシークレットキーを登録する:手順3.jpg

4 各フォームの設定にてreCAPTCHAを適用する設定をします。
詳しくは下記ページでご確認ください。

>> 対象フォームでreCAPTCHAを使用する

参考

フォーム種別による違いについて

登録フォーム
  • 完了画面への遷移(POSTアクセス時)の際にreCAPTCHAエラーチェックを行います。
  • ダブルオプトインについては、完了画面ではなく仮登録完了画面への遷移の際にチェックします。
更新フォーム
  • 認証画面からのログインの際にreCAPTCHAエラーチェックを行います。
削除フォーム
  • 認証画面からのログインの際にreCAPTCHAエラーチェックを行います。
パスワード変更フォーム
  • 完了画面への遷移(POSTアクセス時)の際にreCAPTCHAエラーチェックを行います。
パスワード再発行フォーム
  • 完了画面への遷移(POSTアクセス時)の際にreCAPTCHAエラーチェックを行います。
  • サイト機能ではreCAPTCHA機能は対応しておりません。
  • reCAPTCHAの対応ブラウザについて
    • reCAPTCHAサポートサイトをご参照ください。
      reCAPTCHA Help『Browser requirements for reCAPTCHA』(reCAPTCHAのブラウザ要件)

      reCAPTCHA運用の補足

      reCAPTCHAを利用する際に必要となる可能性のある補足情報をご説明します。

      管理画面でreCAPTCHAキーの状態を確認する

      操作手順

      1 [システム]>[reCAPTCHA設定]を開きます。

      【reCAPTCHAキー一覧】画面
      recaptcha_09.jpg

      1. 状態

      reCAPTCHAキーの稼働状況を確認できます。

      空欄 まだreCAPTCHAが稼働してからアクセスがない状態
      OK 正常にreCAPTCHAが稼働中の状態
      NG reCAPTCHAでエラーが発生している状態

      2. 削除不可:使用中のフォームを確認する

      [削除不可]表示が出ているreCAPTCHAキー設定は、各フォームで使用中の為削除できません。
      削除したい場合は、[削除不可]の文字をクリックすると使用中のフォームが確認できますので、各フォームでreCAPTCHAの設定を無効にしてください。

      [reCAPTCHAキー一覧]画面
      recaptcha_08.jpg

      3. エラーログ

      reCAPTCHAキーごとの各フォームで発生したエラーの履歴を確認できます。

      [reCAPTCHAキーエラーログ]メニューへの遷移
      recaptcha_10.jpg

      [ID] reCAPTCHAのエラー履歴のID番号です。
      [発生時刻] reCAPTCHAのエラー発生時刻です。
      [詳細] reCAPTCHAのエラー内容です。
      [データベース] reCAPTCHAのエラーが発生したフォームが属するデータベースの情報です。
      データベースIDとデータベース名称が表示されます。
      (エラー発生時の名称ではなく、現在の名称で表示されます。)
      [フォームグループ] reCAPTCHAのエラーが発生したフォームの属するフォームグループの情報です。
      フォームグループIDとフォームグループ名称が表示されます。
      (エラー発生時の名称ではなく、現在の名称で表示されます。)
      [フォーム] reCAPTCHAのエラーが発生したフォームの情報です。
      フォームIDとフォーム名称が表示されます。
      (エラー発生時の名称ではなく、現在の名称で表示されます。)
      reCAPTCHAキーエラーの[詳細]
      シークレットキーが不正
      • reCAPTCHAキーが正しいペアでない場合のログです
      • reCAPTCHAによる保護は働きませんが、フォームでエラーは表示されません
      ユーザからのリクエストが不正
      • 攻撃者がreCAPTCHAの保護を回避しようとし、不正なアクセスを行った場合のログです
      • 既存のフォームのJavascriptの相性やブラウザの相性によっては、攻撃者によるアクセスと誤認して、このログが記録される場合もあります
      • reCAPTCHAキーを誤って削除してしまった場合など、reCAPTCHAキー情報に誤りがある場合でも、このログが記録される場合があります
      • フォームの表示上はブロック画面が表示されます
      API接続に失敗
      • ネットワークの障害やGoogleの障害により、reCAPTCHAが正しく動作しなかった場合に記録されるログです
      • シークレットキーが不正な場合にも発生するケースがあります。
        シークレットキーとサイトキーがペアになっておらず、かつ、シークレットキーが削除済みの場合に発生することは確認しています。
      • reCAPTCHAによる保護は働きませんが、フォームでエラーは表示されません
      Actionが不正
      • 外部フォームにreCAPTCHAを設定し、KREISELに直POSTした場合など、イレギュラーな運用を行った場合に記録されるログです
      • エラーのログは残りますが、reCAPTCHAによる保護自体は正常に行われます
      不明なエラー
      • その他、想定外のエラーが発生した場合には、このログが記録される場合があります
      • reCAPTCHAによる保護は働きませんが、フォームでエラーは表示されません

       

注意

ログの保存期間は7日間です。

reCAPTCHA実行画面にJavascriptを利用する場合について

reCAPTCHAはJavascriptによって実行されます。
そのためreCAPTCHA実行画面に、すでにフォーム送信のタイミングで実行されるJavascriptが設置されている場合には競合して正しく動作しません。

その際の原因と対策をご説明します。

原因

以下のページで、formタグのsubmitイベントやinput(type=submit)のclickイベントを設定している場合には正しく動作しません

reCAPTCHAが実行される画面リスト
登録フォームの確認画面
更新フォームの認証画面
削除フォームの認証画面
パスワード変更フォームの認証画面
パスワード再発行フォームの確認画面

対策

reCAPTCHAの仕様にて、reCAPTCHA処理の最後にsubmitFormCustomFuncという名称の関数を実行する仕様があります。

そのため、画面上のコードでsubmitFormCustomFuncという関数を定義し、その中でPOST時に実行したい処理を書くことでsubmitイベント相当のことを行うことが出来ます。

  • submitFormCustomFuncには2つ引数を受け取れるようにしてください
  • 第一引数には、押されたボタン(typeがsubmitのinputタグ)のname属性値が入ります。
  • 第二引数には、reCAPTCHAで定義されているフォームの画面遷移を行うためのexec_submitという関数が入ります。
    • これを実行しない場合、画面遷移は行われません

以下、登録フォームの確認画面(submitボタンのname値が__commit)のサンプルコード

<script> var submitFormCustomFunc = function (button_name, exec_submit){ if (button_name === "__back") { // 戻るボタンが押された処理を書く alert("戻るボタンが押されました"); exec_submit(); } else if (button_name === "__commit") { // 送信ボタンが押された処理を書く alert("送信ボタンが押されました"); exec_submit(); } } </script>

注意

Javascriptの動作や記述については弊社では責任を負いかねます。恐れ入りますが、充分にテストした上でご利用くださいますようお願いいたします。