Azure Application Gateway 上の Azure Web Application Firewall (WAF) には、高度なボット保護の軽減オプションの 1 つとして JavaScript (JS) チャレンジ機能が用意されています。
Azure Front Door 上の Azure Web Application Firewall (WAF) には、高度なボット保護の軽減オプションの 1 つとして JavaScript (JS) チャレンジ機能が用意されています。 Premium バージョンでは、カスタム ルール セットと Bot Manager 1.x ルールセットのアクションとして使用できます。
JavaScript の課題は、正当なユーザーとボットを区別する目に見えない Web チャレンジです。 悪意のあるボットはチャレンジに失敗し、Web アプリケーションを保護します。 さらに、JavaScript の課題は、人間の介入を必要としないため、正当なユーザーの摩擦を軽減します。
Important
Azure Application Gateway での Azure Web Application Firewall JavaScript チャレンジは現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
しくみ
Azure WAF で JavaScript チャレンジがアクティブで、クライアントの HTTP(S) 要求が特定のルールと一致すると、クライアントに Microsoft JavaScript チャレンジ ページが表示されます。 ブラウザーがチャレンジを計算している間、ユーザーはこのページを数秒表示します。 ユーザーのブラウザーがチャレンジを正常に計算すると、WAF の構成時に公開される Azure エンドポイントに応答が返されます。 このエンドポイントはパブリックに公開されますが、このエンドポイントに送信された要求はバックエンドに転送されず、レート制限機能にはカウントされません。 このエンドポイントに対するブラウザーの呼び出しに、計算の成功を示す正しい値が含まれている場合、ユーザーはチャレンジに合格します。
クライアントのブラウザーは、Azure WAF からの検証を受け取るために、このページで JavaScript チャレンジの計算に成功する必要があります。 計算に成功すると、WAF は要求を非ボット クライアントとして検証し、残りの WAF ルールを実行します。 チャレンジの計算に失敗した要求はブロックされます。
クロスオリジン リソース共有 (CORS) 要求では、アクセス試行のたびにチャレンジが行われます。 そのため、クライアントが、チャレンジをホストしているドメインとは異なるドメインから JavaScript チャレンジをトリガーするページにアクセスすると、クライアントが以前にチャレンジに合格した場合でも、クライアントはもう一度チャレンジに直面します。
さらに、クライアントが JavaScript チャレンジを解決した後、クライアントの IP アドレスが変更されると、チャレンジが再度発行されます。
以下に、JavaScript チャレンジ ページの例を示します。
有効期限
WAF ポリシー設定では、JavaScript チャレンジ Cookie の有効期間を分単位で定義します。 有効期間が切れると、ユーザーに対するチャレンジが行われます。 有効期間は 5 から 1,440 分までの整数で、既定値は 30 分です。 JavaScript チャレンジ Cookie 名は、Azure Application Gateway で appgw_azwaf_jsclearance 。
WAF ポリシー設定では、JavaScript チャレンジ Cookie の有効期間を分単位で定義します。 有効期間が切れると、ユーザーに対するチャレンジが行われます。 有効期間は 5 から 1,440 分までの整数で、既定値は 30 分です。 Azure Front Door 上の JavaScript チャレンジ クッキーの名前は afd_azwaf_jsclearance です。
注
JavaScript チャレンジの有効期限 Cookie は、チャレンジが正常に完了した後、ユーザーのブラウザーに挿入されます。
制限事項
- AJAX と API の呼び出しはサポートされていません。JavaScript チャレンジは AJAX および API 要求には適用されません。
- POST 本文のサイズ制限: JavaScript チャレンジをトリガーする最初の要求は、その POST 本文が Azure Application Gateway で 128 KB を超えるとブロックされます。
- POST 本文のサイズ制限: JavaScript チャレンジをトリガーする最初の要求は、その POST 本文が Azure Front Door で 64 KB を超えた場合にブロックされます。
HTML 以外の埋め込みリソース: JavaScript チャレンジは HTML リソース用に設計されています。 画像、CSS、JavaScript ファイル、または同様のリソースなど、ページに埋め込まれている HTML 以外のリソースの課題はサポートされていません。 ただし、以前に JavaScript チャレンジ要求が成功した場合、それらの制限は解除されます。
ブラウザーの互換性: JavaScript チャレンジは Microsoft Internet Explorer ではサポートされていません。 Microsoft Edge、Chrome、Firefox、Safari の最新バージョンの Web ブラウザーと互換性があります。
レート制限はサポートされていません:Application Gateway の JavaScript チャレンジ アクションは、プレビュー期間中の レート制限 の種類のカスタム ルールではサポートされていません。
Application Gateway for Containers WAF: Application Gateway for Containers WAF では、JavaScript チャレンジはサポートされていません。