JSON クロスサイトスクリプティング保護チェック
受信した JSON ペイロードに悪意のあるクロスサイトスクリプティングデータが含まれていると、WAF はリクエストをブロックします。次の手順では、CLI および GUI インターフェイスを使用してこれを設定する方法について説明します。
JSON クロスサイトスクリプティング保護の設定
JSON クロスサイトスクリプティング保護を設定するには、次の手順を完了する必要があります。
- アプリケーションファイアウォールプロファイルを JSON として追加します。
- JSON クロスサイトスクリプティングアクションを設定して、クロスサイトスクリプティングの悪意のあるペイロードをブロックする
JSON タイプのアプリケーションファイアウォールプロファイルの追加
最初に、アプリケーションファイアウォールが JSON Web コンテンツを JSON クロスサイトスクリプティング攻撃から保護する方法を指定するプロファイルを作成する必要があります。
コマンドプロンプトで入力します:
add appfw profile <name> -type (HTML | XML | JSON)
注記:
プロファイルタイプを JSON に設定すると、HTML や XML などの他のチェックは適用されません。
例
add appfw profile profile1 –type JSON
JSON クロスサイトスクリプティング違反のサンプル出力
JSONcross-site scriptingAction: block log stats
Payload: {"username":"<a href="jAvAsCrIpT:alert(1)">X</a>","password":"xyz"}
Log message: Aug 19 06:57:33 <local0.info> 10.106.102.21 08/19/2019:06:57:33 GMT 0-PPE-0 : default APPFW APPFW_JSON_cross-site scripting 58 0 : 10.102.1.98 12-PPE0 - profjson http://10.106.102.24/ Cross-site script check failed for object value(with violation="Bad URL: jAvAsCrIpT:alert(1)") starting at offset(12). <blocked>
Counters
1 357000 1 as_viol_json_xss
3 0 1 as_log_json_xss
5 0 1 as_viol_json_xss_profile appfw__(profjson)
7 0 1 as_log_json_xss_profile appfw__(profjson)
<!--NeedCopy-->
JSON クロスサイトスクリプティングの設定アクション
JSON クロスサイトスクリプティング攻撃からアプリケーションを保護するには、1 つ以上の JSON クロスサイトスクリプティングアクションを設定する必要があります。 コマンドプロンプトで入力します:
set appfw profile <name> - JSONcross-site scriptingAction [block] [log] [stats] [none]
例
set appfw profile profile1 –JSONcross-site scriptingAction block
使用可能なクロスサイトスクリプティングアクションは、「 ブロック-このセキュリティチェックに違反する接続をブロックする」です。 Log - このセキュリティチェックの違反を記録します。 Stats-このセキュリティー検査の統計を生成します。 [なし]-このセキュリティー検査に対するすべてのアクションを無効にします。
注:1 つ以上のアクションを有効にするには、「set appfw プロファイル-jsonCross-Site ScriptingAction」に続けて有効にするアクションを入力します。
例
set appfw profile profile1 -JSONSQLInjectionAction block log stat
GUI を使用して JSON クロスサイトスクリプティング (クロスサイトスクリプティング) 保護を設定する
以下の手順に従って、クロスサイトスクリプティング (クロスサイトスクリプティング) 保護を設定します。
- ナビゲーションペインで、[ セキュリティ ] > [ プロファイル] に移動します。
- 「 プロファイル 」ページで、「 追加」をクリックします。
- NetScaler Web App Firewall プロファイルページで 、[ 詳細設定 ] の [ セキュリティチェック] をクリックします。
- [ セキュリティチェック ] セクションで、[ JSON クロスサイトスクリプティング (クロスサイトスクリプティング) 設定] に移動します。
- チェックボックスの近くにある実行可能アイコンをクリックします。
- [ アクション設定 ] をクリックして、[ JSON クロスサイトスクリプティング設定] ページにアクセスします。
- JSON クロスサイトスクリプティングアクションを選択します。
- [OK] をクリックします。
- [NetScaler Web App Firewall プロファイル ]ページで、[ 詳細設定 ]の[ 緩和ルール]をクリックします。
- [ 緩和ルール ] セクションで [JSON クロスサイトスクリプティング設定] を選択し、[ 編集] をクリックします。
- [ JSON クロスサイトスクリプティング緩和ルール ] ページで、[ 追加 ] をクリックして JSON クロスサイトスクリプティング緩和ルールを追加します。
- リクエストの送信先の URL を入力します。この URL に送信されたすべてのリクエストはブロックされません。
- [Create] をクリックします。
JSON ベースのクロスサイトスクリプティングのためのきめ細かい緩和の構成
Web App Firewall には、JSON ベースのクロスサイトスクリプティング (XSS) インスペクションチェックから特定の JSON キーまたは値を緩和するオプションがあります。細粒度緩和ルールを使用して JSON ペイロードを緩和する複数のオプションを設定できます。 以前は、JSON 保護チェックの緩和を設定する唯一の方法は URL 全体を指定することであり、URL 全体の検証はバイパスされていました。 JSON ベースの SQL セキュリティ保護により、次のことが緩和されます。
- キーネーム
- キーバリュー
JSON ベースのクロスサイトスクリプティング (XSS) 保護により、特定のパターンを許可し、残りをブロックする緩和を構成できます。たとえば、Web App Firewall には現在、100 を超える SQL キーワードのデフォルトセットがあります。ハッカーはこれらのキーワードを SQL インジェクション攻撃で使用できるため、Web App Firewall はすべてを潜在的な脅威としてフラグを立てます。特定の場所で安全と考えられる 1 つ以上のキーワードを緩和する場合は、セキュリティチェックをバイパスして残りをブロックする緩和ルールを設定できます。 リラクゼーションで使用されるコマンドには、値タイプと値表現のオプションパラメータがあります。値式が正規表現かリテラル文字列かを指定できます。値のタイプは空白のままにすることも、[キーワード] または [特殊文字列] を選択することもできます。
注:
正規表現は強力です。特に PCRE 形式の正規表現に慣れていない場合は、作成した正規表現をすべて再確認してください。例外として追加する URL を正確に定義していることを確認し、それ以外は何も定義しないでください。ワイルドカード、特にドットとアスタリスク (.*) のメタ文字やワイルドカードの組み合わせを不注意に使用すると、ブロックする意図のない Web コンテンツへのアクセスをブロックしたり、JSON SQL インジェクションチェックによってブロックされるような攻撃を許可したりするなど、望ましくない結果が生じる可能性があります。
考慮すべきポイント
- 値式はオプションの引数です。フィールド名には値式がない場合があります。
- 1 つのキー名を複数の値式にバインドできます。
- 値式には値型を割り当てる必要があります。値の型は、タグ、属性、パターンです。
- キー名と URL の組み合わせごとに複数の緩和ルールを設定できます。
コマンドインターフェイスを使用して、クロスサイトスクリプティング (XSS) インジェクション攻撃に対する JSON の細粒度緩和の設定
JSON ファイル粒度緩和ルールを構成するには、細粒度緩和エンティティを Web App Firewall プロファイルにバインドする必要があります。
コマンドプロンプトで入力します:
bind appfw profile <profile name> -jsonxssURL <URL> -key <key name> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->
例:
bind appfw profile appprofile1 -jsonxssurl www.example.com -key name -isRegex NOTREGEX -valueType Tag “sname” -isvalueRegex NOTREGEX
<!--NeedCopy-->
GUI を使用して JSON ベースのクロスサイトスクリプティング (XSS) インジェクションの細粒度緩和ルールを構成するには
- [ アプリケーションファイアウォール] > [プロファイル] に移動し、プロファイルを選択して [ 編集] をクリックします。
- [ 詳細設定 ] ウィンドウで、[ 緩和規則] をクリックします。
- 「 緩和ルール 」セクションで、JSON SQL インジェクションレコードを選択し、「 編集」をクリックします。
- [ JSON クロスサイトスクリプティング緩和規則 ] スライダーで、[ 追加] をクリックします。
-
[ JSON クロスサイトスクリプティング緩和規則 ] ページで、次のパラメータを設定します。
- 有効
- 名前は正規表現ですか
- キー名
- URL
- 値のタイプ
- コメント
- リソース ID
- [Create] をクリックします。