XML SQL インジェクションチェック
アクションオプション
XML SQL パラメーター
SELECT * from customer WHERE name like "%D%"
SELECT * from customer WHERE salary like '_00%
- <wildchar type=”LITERAL”>%</wildchar>
- <wildchar type=”LITERAL”>_</wildchar>
- <wildchar type=”LITERAL”>^</wildchar>
- <wildchar type=”LITERAL”>[</wildchar>
- <wildchar type=”LITERAL”>]</wildchar>
-
SQL 特殊文字とキーワード:SQL 違反をトリガーするには、SQL キーワードと SQL 特殊文字の両方が検査対象の場所にある必要があります。この最も制限の少ない設定もデフォルト設定です。
-
SQL 特殊文字— SQL 違反をトリガーするには、処理されたペイロード文字列に少なくとも 1 つの特殊文字が含まれている必要があります。
-
SQL キーワード:SQL 違反をトリガーするには、指定した SQL キーワードのうち少なくとも 1 つが処理されたペイロード文字列に含まれている必要があります。このオプションは十分に考慮せずに選択しないでください。誤検出を避けるため、入力にキーワードが含まれていないことを確認します。
-
SQL 特殊文字またはキーワード:セキュリティチェック違反をトリガーするには、キーワードまたは特殊文字列のいずれかがペイロードに含まれている必要があります。
-
ANSI—UNIX ベースの SQL データベースで通常使用される ANSI 形式の SQL コメントをスキップします。
-
ネスト: ネストされた SQL コメントをスキップします。このコメントは、Microsoft SQL Server で通常使用されます。
-
すべてのコメントを確認— 何もスキップせずに、挿入された SQL のリクエスト全体をチェックします。これがデフォルトの設定です。
リラクゼーションルール
-
名前: リテラル文字列または正規表現を使用して、 要素または属性の名前を設定できます。次の式では、 PurchaseOrder_ という文字列で始まり、その後に長さが 2 文字以上 10 文字以下の数字の文字列が続く要素はすべて除外されます 。コメント: 「発注書要素のXML SQLチェックを免除」
XMLSQLInjection: "PurchaseOrder_[0-9A-Za-z]{2,10}"
IsRegex: REGEX Location: ELEMENT
State: ENABLED
1) XMLSQLInjection: XYZ IsRegex: NOTREGEX
Location: ELEMENT State: ENABLED
2) XMLSQLInjection: xyz IsRegex: NOTREGEX
Location: ELEMENT State: ENABLED
3) XMLSQLInjection: xyz IsRegex: NOTREGEX
Location: ATTRIBUTE State: ENABLED
4) XMLSQLInjection: XYZ IsRegex: NOTREGEX
Location: ATTRIBUTE State: ENABLED
-
場所:XML ペイロード内の XML SQL インスペクション例外の場所を指定できます。デフォルトでは ELEMENT オプションが選択されています。 属性に変更できます。
-
コメント:これはオプションのフィールドです。この緩和ルールの目的を説明するには、最大255文字の文字列を使用できます。
コマンドラインを使用して XML SQL インジェクションチェックを設定する
-
set appfw profile <name> **-XMLSQLInjectionAction** (([block] [log] [stats]) | [none]) -
set appfw profile <name> -XMLSQLInjectionCheckSQLWildChars (ON |OFF) -
set appfw profile <name> -XMLSQLInjectionType ([SQLKeyword] | [SQLSplChar] | [SQLSplCharANDKeyword] | [SQLSplCharORKeyword]) -
set appfw profile <name> -XMLSQLInjectionParseComments ([checkall] | [ansi|nested] | [ansinested])
- bind appfw profile <name> -XMLSQLInjection <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]
- unbind appfw profile <name> -XMLSQLInjection <String>
> bind appfw profile test_profile -XMLSQLInjection "PurchaseOrder_[0-9A-Za-z]{2,15}" -isregex REGEX -location ATTRIBUTE
> unbind appfw profile test_profile –XMLSQLInjection "PurchaseOrder_[0-9A-Za-z]{2,15}" -location ATTRIBUTE
GUI を使用して XMLSQL インジェクションセキュリティチェックを構成する
-
Web App Firewall > プロファイルに移動し、ターゲットプロファイルを強調表示して、「 編集」をクリックします。
-
Web App Firewall > プロファイルに移動し、ターゲットプロファイルを強調表示して、「 編集」をクリックします。
-
「緩和規則」テーブルで、 XML SQL インジェクションのエントリをダブルクリックするか 、エントリを選択して「 編集」をクリックします。
-
XML SQL インジェクション緩和規則ダイアログボックスで 、 緩和規則の追加、 編集、 削除、 有効化、 または無効化の操作を実行します 。
Injection (not_alphanum, SQL)/ Keyword
Injection (not_alphanum, SQL)/ specialstring
Injection (not_alphanum, SQL)/ transformrules/transform
Injection (not_alphanum, SQL)/ wildchar
XML SQL インジェクションチェックでのログ機能の使用
> Shell
> tail -f /var/log/ns.log | grep APPFW_XML_SQL
-
Web App Firewall > プロファイルに移動し、ターゲットプロファイルを選択して、 セキュリティチェックをクリックします。 XML SQL インジェクション行を強調表示して 、「 ログ」をクリックします。プロファイルの XML SQL インジェクションチェックから直接ログにアクセスすると、GUI はログメッセージをフィルタリングし、これらのセキュリティチェック違反に関連するログのみを表示します。
XML SQL インジェクション違反の統計情報
> sh appfw stats
> stat appfw profile <profile name>
-
スクロールバーを使用して、 XML SQL インジェクションの違反とログに関する統計を表示します 。統計テーブルはリアルタイムデータを提供し、7秒ごとに更新されます。