Krolyxon
Commit 4e844bb

ferreniumsrcserverheaders.rs

19 lines · 805 B · Rust

1//! Security headers applied to every response (unless a handler set its own).
2
3use axum::http::{HeaderName, HeaderValue, header};
4use tower_http::set_header::SetResponseHeaderLayer;
5
6pub const PAGE_CSP: &str = "default-src 'self'; img-src 'self' https: data:; script-src 'self'; \
7 object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'";
8
9pub fn layers() -> [SetResponseHeaderLayer<HeaderValue>; 4] {
10 let set = |name: HeaderName, value: &'static str| {
11 SetResponseHeaderLayer::if_not_present(name, HeaderValue::from_static(value))
12 };
13 [
14 set(header::CONTENT_SECURITY_POLICY, PAGE_CSP),
15 set(header::X_CONTENT_TYPE_OPTIONS, "nosniff"),
16 set(header::REFERRER_POLICY, "same-origin"),
17 set(header::X_FRAME_OPTIONS, "DENY"),
18 ]
19}