pub struct StuffingConfig {Show 21 fields
pub failure_window_ms: u64,
pub failure_threshold_suspicious: u32,
pub failure_threshold_high: u32,
pub failure_threshold_block: u32,
pub distributed_min_ips: usize,
pub distributed_window_ms: u64,
pub username_targeted_min_ips: usize,
pub username_targeted_min_failures: u64,
pub username_targeted_window_ms: u64,
pub global_velocity_threshold_rate: f64,
pub global_velocity_window_ms: u64,
pub global_velocity_max_track: usize,
pub takeover_window_ms: u64,
pub takeover_min_failures: u32,
pub low_slow_min_hours: usize,
pub low_slow_min_per_hour: u32,
pub auth_path_patterns: Vec<String>,
pub max_entities: usize,
pub max_distributed_attacks: usize,
pub max_takeover_alerts: usize,
pub cleanup_interval_ms: u64,
}Expand description
Configuration for credential stuffing detection.
Fields§
§failure_window_ms: u64Sliding window duration (ms) - default 5 minutes
failure_threshold_suspicious: u32Failures to flag as suspicious
failure_threshold_high: u32Failures to flag as high risk
failure_threshold_block: u32Failures to trigger block
distributed_min_ips: usizeMinimum IPs for distributed attack (fingerprint-based)
distributed_window_ms: u64Window for distributed attack correlation (ms)
username_targeted_min_ips: usizeMinimum IPs targeting same username for alert
username_targeted_min_failures: u64Minimum failures against username for alert
username_targeted_window_ms: u64Window for username-targeted correlation (ms)
global_velocity_threshold_rate: f64Failure rate (per second) that triggers velocity alert
global_velocity_window_ms: u64Window for global velocity tracking (ms)
global_velocity_max_track: usizeMaximum failures to track in global velocity window
takeover_window_ms: u64Window to check failures before success (ms)
takeover_min_failures: u32Minimum failures before success to flag takeover
low_slow_min_hours: usizeMinimum hours with failures for low-and-slow
low_slow_min_per_hour: u32Minimum failures per hour for low-and-slow
auth_path_patterns: Vec<String>Path patterns that indicate auth endpoints
max_entities: usizeMaximum entities to track
max_distributed_attacks: usizeMaximum distributed attacks to track
max_takeover_alerts: usizeMaximum takeover alerts to retain
cleanup_interval_ms: u64Cleanup interval (ms)
Implementations§
Trait Implementations§
Source§impl Clone for StuffingConfig
impl Clone for StuffingConfig
Source§fn clone(&self) -> StuffingConfig
fn clone(&self) -> StuffingConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StuffingConfig
impl Debug for StuffingConfig
Auto Trait Implementations§
impl Freeze for StuffingConfig
impl RefUnwindSafe for StuffingConfig
impl Send for StuffingConfig
impl Sync for StuffingConfig
impl Unpin for StuffingConfig
impl UnsafeUnpin for StuffingConfig
impl UnwindSafe for StuffingConfig
Blanket Implementations§
Source§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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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