[][src]Crate content_security_policy

Parse and validate Web Content-Security-Policy level 3

Example

extern crate content_security_policy;
use content_security_policy::*;
fn main() {
    let csp_list = CspList::parse("script-src *.notriddle.com", PolicySource::Header, PolicyDisposition::Enforce);
    let (check_result, _) = csp_list.should_request_be_blocked(&Request {
        url: Url::parse("https://www.notriddle.com/script.js").unwrap(),
        origin: Origin::Tuple("https".to_string(), url::Host::Domain("notriddle.com".to_owned()), 443),
        redirect_count: 0,
        destination: Destination::Script,
        initiator: Initiator::None,
        nonce: String::new(),
        integrity_metadata: String::new(),
        parser_metadata: ParserMetadata::None,
    });
    assert_eq!(check_result, CheckResult::Allowed);
    let (check_result, _) = csp_list.should_request_be_blocked(&Request {
        url: Url::parse("https://www.evil.example/script.js").unwrap(),
        origin: Origin::Tuple("https".to_string(), url::Host::Domain("notriddle.com".to_owned()), 443),
        redirect_count: 0,
        destination: Destination::Script,
        initiator: Initiator::None,
        nonce: String::new(),
        integrity_metadata: String::new(),
        parser_metadata: ParserMetadata::None,
    });
    assert_eq!(check_result, CheckResult::Blocked);
}

Re-exports

pub extern crate url;
pub extern crate percent_encoding;

Modules

sandboxing_directive
text_util

Structs

CspList

https://www.w3.org/TR/CSP/#csp-list

Directive

https://www.w3.org/TR/CSP/#directives

Element
HashFunction

https://www.w3.org/TR/SRI/#integrity-metadata

Policy

A single parsed content security policy.

Request

request to be validated

Response

response to be validated

Url

A parsed URL record.

Violation

violation information

Enums

CheckResult

Many algorithms are allowed to return either "Allowed" or "Blocked". The spec describes these as strings.

Destination
HashAlgorithm
Initiator
InlineCheckType

The valid values for type are "script", "script attribute", "style", and "style attribute".

MatchResult

https://www.w3.org/TR/CSP/#match-element-to-source-list

Origin

The origin of an URL

ParserMetadata
PolicyDisposition

https://www.w3.org/TR/CSP/#policy-disposition

PolicySource

https://www.w3.org/TR/CSP/#policy-source

SubresourceIntegrityMetadata

https://www.w3.org/TR/SRI/#parse-metadata

Violates

https://www.w3.org/TR/CSP/#does-request-violate-policy

ViolationResource

violation information

Functions

parse_subresource_integrity_metadata

https://www.w3.org/TR/SRI/#parse-metadata