@@ -3,6 +3,19 @@ import { sequence } from '@sveltejs/kit/hooks';
33
44import { dev } from '$app/environment' ;
55
6+ const csp = {
7+ 'default-src' : [ 'self' ] ,
8+ 'script-src' : [ 'self' ] ,
9+ 'style-src' : [ 'self' , 'unsafe-hashes' , 'sha256-S8qMpvofolR8Mpjy4kQvEm7m1q8clzU4dfDH0AmvZjo=' ] ,
10+ 'font-src' : [ 'self' ] ,
11+ 'img-src' : [ 'self' , 'data:' , 'https:' ] ,
12+ 'connect-src' : [ 'self' ] ,
13+ 'object-src' : [ 'none' ] ,
14+ 'base-uri' : [ 'self' ] ,
15+ 'form-action' : [ 'self' ] ,
16+ 'frame-ancestors' : [ 'none' ]
17+ } ;
18+
619const handleHeaders : Handle = async ( { event, resolve } ) => {
720 const headers : Record < string , string > = {
821 'X-Frame-Options' : 'DENY' ,
@@ -18,7 +31,12 @@ const handleHeaders: Handle = async ({ event, resolve }) => {
1831 headers [ 'Strict-Transport-Security' ] = 'max-age=31536000; includeSubDomains' ;
1932 }
2033
21- event . locals . securityHeaders = headers ;
34+ event . locals . securityHeaders = {
35+ ...headers ,
36+ [ 'Content-Security-Policy' ] : Object . entries ( csp )
37+ . map ( ( [ directive , sources ] ) => `${ directive } ${ sources . join ( ' ' ) } ` )
38+ . join ( '; ' )
39+ } ;
2240
2341 const response = await resolve ( event ) ;
2442
0 commit comments