diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts index e55a52fcab..8c3d6b5b27 100644 --- a/packages/backend/src/server/ServerService.ts +++ b/packages/backend/src/server/ServerService.ts @@ -278,7 +278,17 @@ export class ServerService implements OnApplicationShutdown { // Other Security/Privacy Headers fastify.addHook('onRequest', (_, reply, done) => { reply.header('x-content-type-options', 'nosniff'); - reply.header('permissions-policy', 'interest-cohort=()'); // Disable FLoC + reply.header('permissions-policy', + [ + 'interest-cohort', + 'encrypted-media', + 'attribution-reporting', + 'geolocation', 'microphone', 'camera', + 'midi', 'payment', 'usb', 'serial', + 'xr-spatial-tracking' + ] + .map(feature => `${feature}=()`).join(', ')); + if (this.config.browserSandboxing.strictOriginReferrer) { reply.header('referrer-policy', 'strict-origin'); } diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts index 0f1fdca0d4..8e1737a92d 100644 --- a/packages/backend/src/server/web/ClientServerService.ts +++ b/packages/backend/src/server/web/ClientServerService.ts @@ -248,16 +248,6 @@ export class ClientServerService { fastify.addHook('onRequest', makeHstsHook(host, preload)); } - // Other Security/Privacy Headers - fastify.addHook('onRequest', (_, reply, done) => { - reply.header('x-content-type-options', 'nosniff'); - reply.header('permissions-policy', 'interest-cohort=()'); // Disable FLoC - if (this.config.browserSandboxing.strictOriginReferrer ?? true) { - reply.header('referrer-policy', 'strict-origin'); - } - done(); - }); - // CSP if (process.env.NODE_ENV === 'production') { console.debug('cspPrerenderedContent', this.config.cspPrerenderedContent);