tweak to add security headers
This commit is contained in:
+27
-19
@@ -40,7 +40,10 @@ export function middleware(request) {
|
|||||||
.trim();
|
.trim();
|
||||||
|
|
||||||
const requestHeaders = new Headers(request.headers);
|
const requestHeaders = new Headers(request.headers);
|
||||||
|
// Unique trusted nonce
|
||||||
requestHeaders.set("x-nonce", nonce);
|
requestHeaders.set("x-nonce", nonce);
|
||||||
|
|
||||||
|
// CSP policy
|
||||||
requestHeaders.set(
|
requestHeaders.set(
|
||||||
"Content-Security-Policy",
|
"Content-Security-Policy",
|
||||||
contentSecurityPolicyHeaderValue
|
contentSecurityPolicyHeaderValue
|
||||||
@@ -56,24 +59,29 @@ export function middleware(request) {
|
|||||||
contentSecurityPolicyHeaderValue
|
contentSecurityPolicyHeaderValue
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// XSS protection (legacy)
|
||||||
|
response.headers.set("X-XSS-Protection", "1; mode=block");
|
||||||
|
|
||||||
|
// Prevent MIME type sniffing
|
||||||
|
response.headers.set("X-Content-Type-Options", "nosniff");
|
||||||
|
|
||||||
|
// Prevent iframe embedding
|
||||||
|
response.headers.set("X-Frame-Options", "DENY");
|
||||||
|
|
||||||
|
// Referrer policy
|
||||||
|
response.headers.set("Referrer-Policy", "strict-origin-when-cross-origin");
|
||||||
|
|
||||||
|
// Permissions lockdown
|
||||||
|
response.headers.set(
|
||||||
|
"Permissions-Policy",
|
||||||
|
"geolocation=(), camera=(), microphone=(), fullscreen=(self)"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Enforce HTTPS via HSTS
|
||||||
|
response.headers.set(
|
||||||
|
"Strict-Transport-Security",
|
||||||
|
"max-age=63072000; includeSubDomains; preload"
|
||||||
|
);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
// export const config = {
|
|
||||||
// matcher: [
|
|
||||||
// /*
|
|
||||||
// * Match all request paths except for the ones starting with:
|
|
||||||
// * - api (API routes)
|
|
||||||
// * - _next/static (static files)
|
|
||||||
// * - _next/image (image optimization files)
|
|
||||||
// * - favicon.ico (favicon file)
|
|
||||||
// */
|
|
||||||
// {
|
|
||||||
// source: "/((?!api|_next/static|_next/image|favicon.ico).*)",
|
|
||||||
// missing: [
|
|
||||||
// { type: "header", key: "next-router-prefetch" },
|
|
||||||
// { type: "header", key: "purpose", value: "prefetch" },
|
|
||||||
// ],
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// };
|
|
||||||
|
|||||||
Reference in New Issue
Block a user