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 です。 ただし、フォームバーチャルドメインをご利用の場合は、その利用ドメインを指定してください。 |
[送信]をクリックします。
3 完了画面で、サイトキーとシークレットキーが発行されました。この情報をクライゼルに設定します。
[reCAPTCHAを追加する]完了画面
クライゼルにreCAPTCHAのサイトキーとシークレットキーを登録する
クライゼルでreCAPTCHA機能を使用できるようにするための設定です。
この設定ができるのはシステム管理者と特権ユーザです。
操作手順
1 [システム]>[reCAPTCHA設定]を開き、[新規作成]ボタンをクリックします。
[reCAPTCHA設定]画面
2 下記項目を設定します。
| [reCAPTCHAキー名称] | クライゼル管理画面上でreCAPTCHAのキーを区別するための名前をつけます。 |
|---|---|
| [サイトキー] | Google上で発行されたサイトキーの値を貼り付けます。 |
| [シークレットキー] | Google上で発行されたシークレットキーの値を貼り付けます。 |
[次へ→]をクリックし、確認画面で[実行]をクリックします。
3 完了画面が表示されます。
「戻る」をクリックすると、【reCAPTCHAキー一覧】に作成した内容が登録されていることが確認できます。
[reCAPTCHAを追加する]完了画面
4 各フォームの設定にてreCAPTCHAを適用する設定をします。
詳しくは下記ページでご確認ください。
参考
フォーム種別による違いについて
| 登録フォーム |
|
|---|---|
| 更新フォーム |
|
| 削除フォーム |
|
| パスワード変更フォーム |
|
| パスワード再発行フォーム |
|
- サイト機能ではreCAPTCHA機能は対応しておりません。
- reCAPTCHAの対応ブラウザについて
- reCAPTCHAサポートサイトをご参照ください。
reCAPTCHA Help『Browser requirements for reCAPTCHA』(reCAPTCHAのブラウザ要件)
reCAPTCHA運用の補足
reCAPTCHAを利用する際に必要となる可能性のある補足情報をご説明します。
管理画面でreCAPTCHAキーの状態を確認する
操作手順
1 [システム]>[reCAPTCHA設定]を開きます。
【reCAPTCHAキー一覧】画面
1. 状態
reCAPTCHAキーの稼働状況を確認できます。
空欄 まだreCAPTCHAが稼働してからアクセスがない状態 OK 正常にreCAPTCHAが稼働中の状態 NG reCAPTCHAでエラーが発生している状態 2. 削除不可:使用中のフォームを確認する
[削除不可]表示が出ているreCAPTCHAキー設定は、各フォームで使用中の為削除できません。
削除したい場合は、[削除不可]の文字をクリックすると使用中のフォームが確認できますので、各フォームでreCAPTCHAの設定を無効にしてください。[reCAPTCHAキー一覧]画面
3. エラーログ
reCAPTCHAキーごとの各フォームで発生したエラーの履歴を確認できます。
[reCAPTCHAキーエラーログ]メニューへの遷移
reCAPTCHAキーエラーの[詳細][ID] reCAPTCHAのエラー履歴のID番号です。 [発生時刻] reCAPTCHAのエラー発生時刻です。 [詳細] reCAPTCHAのエラー内容です。 [データベース] reCAPTCHAのエラーが発生したフォームが属するデータベースの情報です。
データベースIDとデータベース名称が表示されます。
(エラー発生時の名称ではなく、現在の名称で表示されます。)[フォームグループ] reCAPTCHAのエラーが発生したフォームの属するフォームグループの情報です。
フォームグループIDとフォームグループ名称が表示されます。
(エラー発生時の名称ではなく、現在の名称で表示されます。)[フォーム] reCAPTCHAのエラーが発生したフォームの情報です。
フォームIDとフォーム名称が表示されます。
(エラー発生時の名称ではなく、現在の名称で表示されます。)シークレットキーが不正 - reCAPTCHAキーが正しいペアでない場合のログです
- reCAPTCHAによる保護は働きませんが、フォームでエラーは表示されません
ユーザからのリクエストが不正 - 攻撃者がreCAPTCHAの保護を回避しようとし、不正なアクセスを行った場合のログです
- 既存のフォームのJavascriptの相性やブラウザの相性によっては、攻撃者によるアクセスと誤認して、このログが記録される場合もあります
- reCAPTCHAキーを誤って削除してしまった場合など、reCAPTCHAキー情報に誤りがある場合でも、このログが記録される場合があります
- フォームの表示上はブロック画面が表示されます
API接続に失敗 - ネットワークの障害やGoogleの障害により、reCAPTCHAが正しく動作しなかった場合に記録されるログです
- シークレットキーが不正な場合にも発生するケースがあります。
シークレットキーとサイトキーがペアになっておらず、かつ、シークレットキーが削除済みの場合に発生することは確認しています。 - reCAPTCHAによる保護は働きませんが、フォームでエラーは表示されません
Actionが不正 - 外部フォームにreCAPTCHAを設定し、KREISELに直POSTした場合など、イレギュラーな運用を行った場合に記録されるログです
- エラーのログは残りますが、reCAPTCHAによる保護自体は正常に行われます
不明なエラー - その他、想定外のエラーが発生した場合には、このログが記録される場合があります
- 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の動作や記述については弊社では責任を負いかねます。恐れ入りますが、充分にテストした上でご利用くださいますようお願いいたします。