| Crates.io | origin_check |
| lib.rs | origin_check |
| version | 0.2.2 |
| created_at | 2024-01-11 05:09:15.42746+00 |
| updated_at | 2024-01-12 09:38:47.815187+00 |
| description | A minimal Tower middleware layer for mitigating CSRF attacks |
| homepage | |
| repository | https://github.com/benwr/origin_check |
| max_upload_size | |
| id | 1095865 |
| size | 41,566 |
A minimal Tower middleware layer for mitigating CSRF attacks.
Examines the Origin or Referer header of incoming requests, and compares
it to the target Host and URI.
let (mock_service, _) = tower_test::mock::spawn::<http::Request<()>, ()>();
let csrf_proof_service = origin_check::OriginCheck::new(mock_service);
This crate makes several assumptions that must all be true for it to be a good choice for you:
https or
on localhost.GET or HEAD requests.
Such requests are always allowed by this service, regardless of CSRF
indicators.Origin or
Referer does not exactly match the Host. This means that you cannot,
e.g., send POST requests from one subdomain to another, or from one port to
another.Origin or Referer header on
non-GET/-HEAD requests, when those requests are initiated by your site.
In order to ensure this, be careful that the Referrer-Policy for your site
is not set to no-referrer.You probably want to set SameSite=Strict or SameSite=Lax on any
authentication cookies, as additional protection against CSRF.
You likely also want to set X-Frame-Options: DENY for your site by default,
to prevent clickjacking, which is a distinct but related problem to CSRF.
A minimal Tower middleware layer for mitigating CSRF attacks.