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