pub struct CrsRule {
pub id: u32,
pub severity: u8,
pub phase: u8,
pub tags: Vec<String>,
pub pattern: String,
pub targets: Vec<String>,
pub transformations: Vec<String>,
}Expand description
SEC-08 (#212): A single OWASP CRS-compatible WAF rule. Each rule has a numeric ID (CRS convention: 9xxxx), a severity level, a phase (1 = request headers, 2 = request body), a list of tags, a regex pattern, and the inspection targets to apply the pattern to. Rules are evaluated in order; matching rules add their severity to the request’s anomaly score. The request is blocked when the score exceeds the configured threshold.
Fields§
§id: u32Unique rule ID (CRS convention: 9xxxx). Used for exclusions and logging.
severity: u8Rule severity: 1 = critical, 2 = warning, 3 = notice, 4 = info. Higher severity contributes more to the anomaly score.
phase: u8Evaluation phase: 1 = request headers (path, query, headers), 2 = request body. Default 1.
Tags for grouping and exclusion (e.g. “OWASP_CRS”, “SQL_INJECTION”).
pattern: StringThe regex pattern to match against the target values.
targets: Vec<String>Which request parts to inspect: “path”, “query”, “header”, “headers” (all selected headers), “body”. Default: [“path”, “query”].
transformations: Vec<String>Optional list of transformations to apply before matching (e.g. “lowercase”, “url_decode”, “html_entity_decode”). Default: [].
Trait Implementations§
Source§impl<'de> Deserialize<'de> for CrsRule
impl<'de> Deserialize<'de> for CrsRule
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for CrsRule
impl JsonSchema for CrsRule
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl StructuralPartialEq for CrsRule
Auto Trait Implementations§
impl Freeze for CrsRule
impl RefUnwindSafe for CrsRule
impl Send for CrsRule
impl Sync for CrsRule
impl Unpin for CrsRule
impl UnwindSafe for CrsRule
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more