pub struct CompressionBombConfig {
pub max_ratio: f64,
pub max_decompressed_size: usize,
pub max_compressed_size: usize,
pub max_compression_depth: usize,
pub check_interval_bytes: usize,
}Expand description
Configuration for compression bomb protection.
max_ratio is a security parameter: it limits how much the decompressed output may exceed
the compressed input. Legitimate high-compression workloads (e.g., repetitive JSON with
brotli) can exceed 200x; increase this field if you see false positives. Default is 300.0
which is permissive enough for real brotli/gzip workloads while still catching true bombs.
Fields§
§max_ratio: f64Maximum allowed compression ratio (decompressed_size / compressed_size). This is a security parameter — see struct-level note.
max_decompressed_size: usizeMaximum allowed decompressed size in bytes.
max_compressed_size: usizeMaximum compressed input size in bytes. Reject inputs larger than this before decoding.
Defaults to 100 MiB. This is separate from max_decompressed_size — a legitimately
small compressed payload is expected to be far less than the decompressed limit.
max_compression_depth: usizeMaximum nested compression levels.
check_interval_bytes: usizeCheck interval - how often to check during decompression.
Implementations§
Source§impl CompressionBombConfig
impl CompressionBombConfig
Sourcepub fn high_security() -> Self
pub fn high_security() -> Self
Configuration for high-security environments.
Sourcepub fn low_memory() -> Self
pub fn low_memory() -> Self
Configuration for low-memory environments.
Sourcepub fn high_throughput() -> Self
pub fn high_throughput() -> Self
Configuration for high-throughput environments.
Trait Implementations§
Source§impl Clone for CompressionBombConfig
impl Clone for CompressionBombConfig
Source§fn clone(&self) -> CompressionBombConfig
fn clone(&self) -> CompressionBombConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompressionBombConfig
impl Debug for CompressionBombConfig
Source§impl Default for CompressionBombConfig
impl Default for CompressionBombConfig
Source§impl<'de> Deserialize<'de> for CompressionBombConfig
impl<'de> Deserialize<'de> for CompressionBombConfig
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>,
Auto Trait Implementations§
impl Freeze for CompressionBombConfig
impl RefUnwindSafe for CompressionBombConfig
impl Send for CompressionBombConfig
impl Sync for CompressionBombConfig
impl Unpin for CompressionBombConfig
impl UnsafeUnpin for CompressionBombConfig
impl UnwindSafe for CompressionBombConfig
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> 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