Skip to content

Commit c13e534

Browse files
committed
add csp draft
1 parent 82862f0 commit c13e534

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

packages/backend/src/csp.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
use axum::{body::Body, extract::Request, http::HeaderValue, middleware::Next, response::Response};
2+
3+
const CUSTOM_HEADER_NAME: &str = "Content-Security-Policy";
4+
const CUSTOM_HEADER_VALUE: &str = "default-src 'self'; script-src 'report-sample' 'self'; style-src 'report-sample' 'self'; object-src 'none'; base-uri 'self'; connect-src 'self' data:; font-src 'self'; frame-src 'self'; img-src 'self'; manifest-src 'self'; media-src 'self'; worker-src 'none';";
5+
6+
lazy_static! {
7+
static ref HEADER_VALUE: HeaderValue = HeaderValue::from_static(CUSTOM_HEADER_VALUE);
8+
}
9+
10+
pub async fn add_csp_header(request: Request<Body>, next: Next) -> Response {
11+
let mut response = next.run(request).await;
12+
response
13+
.headers_mut()
14+
.append(CUSTOM_HEADER_NAME, HEADER_VALUE.clone());
15+
response
16+
}

packages/backend/src/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
use std::{collections::HashMap, sync::Arc};
22

33
use axum::{
4+
body::Body,
45
extract::{DefaultBodyLimit, Request},
6+
http::HeaderValue,
7+
middleware::{self, Next},
8+
response::Response,
59
routing::{delete, get, post},
610
Router, ServiceExt,
711
};
@@ -19,6 +23,7 @@ use tower_http::{
1923
extern crate lazy_static;
2024

2125
mod config;
26+
mod csp;
2227
mod health;
2328
mod lock;
2429
mod note;
@@ -55,6 +60,8 @@ async fn main() {
5560
let app = Router::new()
5661
.nest("/api", api_routes)
5762
.fallback_service(serve_dir)
63+
// Disabled for now, as svelte inlines scripts
64+
// .layer(middleware::from_fn(csp::add_csp_header))
5865
.layer(DefaultBodyLimit::max(*config::LIMIT))
5966
.layer(
6067
CompressionLayer::new()

0 commit comments

Comments
 (0)