4.5. 複雑な ModSecurity ルールの例
たとえば、リクエストによって履歴が変更されたかどうかを確認するために、次の複雑な ModSecurity ルールを定義できます。
SecRule REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS "history.pushstate|history.replacestate" "phase:4,deny,log,msg:'history-based attacks detected'"
前述の ModSecurity ルールは次のコンポーネントで設定されます。
SecRule
指定された演算子を使用して指定された変数を分析するルールを作成する 設定ディレクティブ
注記ほとんどの ModSecurity ルールは、この設定ディレクティブを使用します。
- `REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS `
- ルールがチェックするリクエストのさまざまな部分を定義する 変数 のパイプ区切りのリスト
"history.pushstate|history.replacestate"
-
JavaScript の
history.pushstate()
メソッドとhistory.replacestate()
メソッドをチェックする、パイプで区切られた 演算子 のペア "phase:4,deny,log,msg:'history-based attacks detected'"
- 指定された演算子の値が見つかった場合にルールが実行する アクション または 変換
前の例に基づいて、Apache リクエストサイクルのフェーズ 4 中に、ルールはリクエストサイクルのさまざまな部分の history.pushstate()
メソッドと history.replacestate()
メソッドをチェックします。ルールがリクエスト URL 文字列、リクエスト本文、リクエストヘッダー名、またはリクエストヘッダーでこれらのメソッドを見つけた場合、ルールは次のアクションを実行します。
deny
ルール処理を停止し、トランザクションをインターセプトします
log
ルールの一致が成功したことを Apache エラーログファイルと ModSecurity 監査ログに記録します。
msg
ログで
history-based attacks detected
として定義されたメッセージを出力します