このドキュメントでは、Google Cloud Armor 用に WAF 用 reCAPTCHA の機能を実装する方法の例を示します。
1 つのアプリケーションで WAF 用 reCAPTCHA の 1 つ以上の機能を使用できます。
1 つ以上の機能を使用する場合は、これらの機能ごとに reCAPTCHA キーを作成し、アプリケーションで使用する必要があります。たとえば、reCAPTCHA アクション トークンと reCAPTCHA による確認ページを使用する場合は、アクション トークンキーと確認ページキーを作成してアプリケーションで使用する必要があります。例 1: reCAPTCHA セッション トークンと reCAPTCHA 課題ページを使用する
ユーザーがアクセスする可能性のあるページ(たとえば ログインページなど)に、reCAPTCHA セッション トークンを追加して、Cookie を定期的に更新できます。スコアが低いときにリクエストを reCAPTCHA 課題ページにリダイレクトするように、Google Cloud Armor セキュリティ ポリシー ルールを構成します。
次の図は、reCAPTCHA セッション トークンと reCAPTCHA 課題ページの機能を使用するワークフローを示しています。
例 2: reCAPTCHA アクション トークンと reCAPTCHA 課題ページを使用する
reCAPTCHA アクション トークンを追加して、ご購入手続きなどのユーザー アクションを保護できます。次のいずれかの状況でリクエストを reCAPTCHA 課題ページにリダイレクトするように、Google Cloud Armor セキュリティ ポリシー ルールを構成します。
- スコアが低い。
- アクション トークンの
action_name
属性が、保護されているユーザー アクションと一致しない。
次の図は、reCAPTCHA アクション トークンと reCAPTCHA 課題ページの機能を使用するワークフローを示しています。
次のサンプル スクリプトは、reCAPTCHA アクション トークンを使用し、アクション トークンがヘッダーとして添付された reCAPTCHA 課題ページにリダイレクトする方法を示しています。
<script src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_SITE_KEY"></script>
<script>
function onSuccess(token) {
const xhr = new XMLHttpRequest();
xhr.open('GET','http://www.example.com/checkout', false);
xhr.setRequestHeader("X-Recaptcha-Token", token);
xhr.onreadystatechange = function() {
// Make sure that the request is finished and response is ready with 200
if (this.readyState == 4 && this.status == 200) {
// Display the response, it could be a reCAPTCHA challenge
// page based on your Google Cloud Armor security rule settings.
document.open();
document.write(xhr.responseText);
document.close();
}
};
xhr.send(null);
}
grecaptcha.enterprise.ready(function () {
document.getElementById("execute-button").onclick = () => {
grecaptcha.enterprise.execute('ACTION_TOKEN_SITE_KEY', {
}).then(onSuccess, onError);
};
});
</script>
次のステップ
- Google Cloud Armor を使用して reCAPTCHA WAF 機能を実装する方法を学習する。
- 詳しくは、WAF サービス プロバイダとの統合の機能をご覧ください。