3.2.3. ルール 2 の例
本セクションでは、より複雑なルールの例を説明します。指定されたカスタムルールは、履歴がリクエストによって変更されたかどうかを確認します。一般的なルールには、設定ディレクティブ、変数、演算子、およびアクションの 4 つの部分があります。設定ディレクティブ、変数、演算子、および変換/アクションの完全な一覧は、本ガイドのリファレンスセクションを参照してください。このルールには、以下の項目があります。
SecRule REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS "history.pushstate|history.replacestate" "phase:4,deny,log,msg:'history-based attacks detected'"
ルールは SecRule
で始まります。これは、選択された演算子を使用して選択した変数を分析するルールを作成する設定ディレクティブです。ほとんどのルールは、この設定ディレクティブを使用します。
その後、このルールは変数 REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS
。4 つの変数で、それぞれはルールチェックの異なる部分を定義します。
次に、演算子は要求に対して定義されます。この場合、ルールは JS メソッド history.pushstate()
および history.replacestate()
をチェックします。これらの値が見つかると、最後のセクションが実行されます。
最後のセクションでは、実行される変換とアクションを定義します。この場合、最初にルールが実行される処理フェーズを定義します。次に、deny
、log
、および msg
のアクションを実行します。Deny
は、ルール処理を停止し、トランザクションをインターセプトします。Log
にはログの作成が必要であることを示します。Msg
はログでメッセージを出力します。メッセージは history-based attacks detected(履歴ベースの攻撃が検出されました) として定義されます。