Skip to main content

SsrfGuard

Struct SsrfGuard 

Source
pub struct SsrfGuard {
    pub allowed_schemes: Vec<String>,
    pub blocked_hosts: Vec<String>,
    pub resolve_dns: bool,
    pub check_private_ips: bool,
}
Expand description

SSRF (Server-Side Request Forgery) protection configuration.

Validates hyperlinks extracted from DOCX documents against a set of allowed schemes, blocked hosts, and optionally resolves DNS to check for private / loopback IP addresses.

§Examples

use easydoc_reader::security::SsrfGuard;

let guard = SsrfGuard::new();
assert!(guard.check_url("https://example.com").is_ok());
assert!(guard.check_url("http://127.0.0.1/admin").is_err());
assert!(guard.check_url("ftp://example.com").is_err());

Fields§

§allowed_schemes: Vec<String>

Allowed URI schemes (lowercase). Default: ["http", "https", "mailto"].

§blocked_hosts: Vec<String>

Blocked host names (lowercase). Default: ["localhost"].

§resolve_dns: bool

Whether to resolve DNS names and check the resulting IP addresses against private / loopback ranges. Default: true.

§check_private_ips: bool

Whether to check IP addresses against private / loopback / link-local ranges. Default: true. Set to false in permissive mode.

Implementations§

Source§

impl SsrfGuard

Source

pub fn new() -> Self

Creates a guard with the default conservative policy.

Allows http, https, mailto schemes; blocks localhost and all private / loopback IP ranges; resolves DNS to verify host names.

Source

pub fn permissive() -> Self

Creates a permissive guard that only enforces scheme restrictions.

No hosts are blocked, DNS resolution is disabled, and private IP ranges are not checked. Useful when the caller only needs basic scheme validation.

Source

pub fn check_url(&self, url: &str) -> Result<(), String>

Checks whether the given URL passes all SSRF protection rules.

§Errors

Returns a human-readable error message describing the violation.

Trait Implementations§

Source§

impl Clone for SsrfGuard

Source§

fn clone(&self) -> SsrfGuard

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SsrfGuard

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SsrfGuard

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.