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() をチェックします。これらの値が見つかると、最後のセクションが実行されます。

最後のセクションでは、実行される変換とアクションを定義します。この場合、最初にルールが実行される処理フェーズを定義します。次に、denylog、および msg のアクションを実行します。Deny は、ルール処理を停止し、トランザクションをインターセプトします。Log にはログの作成が必要であることを示します。Msg はログでメッセージを出力します。メッセージは history-based attacks detected(履歴ベースの攻撃が検出されました) として定義されます。