diff options
Diffstat (limited to 'server/middlewares')
-rw-r--r-- | server/middlewares/csp.ts | 45 | ||||
-rw-r--r-- | server/middlewares/dnt.ts | 2 | ||||
-rw-r--r-- | server/middlewares/index.ts | 2 |
3 files changed, 48 insertions, 1 deletions
diff --git a/server/middlewares/csp.ts b/server/middlewares/csp.ts new file mode 100644 index 000000000..a0ed3710b --- /dev/null +++ b/server/middlewares/csp.ts | |||
@@ -0,0 +1,45 @@ | |||
1 | import * as helmet from 'helmet' | ||
2 | import { CONFIG } from '../initializers/constants' | ||
3 | |||
4 | const baseDirectives = Object.assign({}, | ||
5 | { | ||
6 | defaultSrc: ["'none'"], // by default, not specifying default-src = '*' | ||
7 | connectSrc: ['*', 'data:'], | ||
8 | mediaSrc: ["'self'", 'https:', 'blob:'], | ||
9 | fontSrc: ["'self'", 'data:'], | ||
10 | imgSrc: ["'self'", 'data:'], | ||
11 | scriptSrc: ["'self' 'unsafe-inline'"], | ||
12 | styleSrc: ["'self' 'unsafe-inline'"], | ||
13 | // objectSrc: ["'none'"], // only define to allow plugins, else let defaultSrc 'none' block it | ||
14 | formAction: ["'self'"], | ||
15 | frameAncestors: ["'none'"], | ||
16 | baseUri: ["'self'"], | ||
17 | pluginTypes: ["'none'"], | ||
18 | manifestSrc: ["'self'"], | ||
19 | frameSrc: ["'self'"], // instead of deprecated child-src / self because of test-embed | ||
20 | workerSrc: ["'self'"], // instead of deprecated child-src | ||
21 | upgradeInsecureRequests: true | ||
22 | }, | ||
23 | (CONFIG.SERVICES['CSP-LOGGER'] != null) ? { reportUri: CONFIG.SERVICES['CSP-LOGGER'] } : {} | ||
24 | ) | ||
25 | |||
26 | const baseCSP = helmet.contentSecurityPolicy({ | ||
27 | directives: baseDirectives, | ||
28 | browserSniff: false, | ||
29 | reportOnly: true | ||
30 | }) | ||
31 | |||
32 | const embedCSP = helmet.contentSecurityPolicy({ | ||
33 | directives: Object.assign(baseDirectives, { | ||
34 | frameAncestors: ['*'] | ||
35 | }), | ||
36 | browserSniff: false, // assumes a modern browser, but allows CDN in front | ||
37 | reportOnly: true | ||
38 | }) | ||
39 | |||
40 | // --------------------------------------------------------------------------- | ||
41 | |||
42 | export { | ||
43 | baseCSP, | ||
44 | embedCSP | ||
45 | } | ||
diff --git a/server/middlewares/dnt.ts b/server/middlewares/dnt.ts index cabad39c6..607def855 100644 --- a/server/middlewares/dnt.ts +++ b/server/middlewares/dnt.ts | |||
@@ -10,4 +10,4 @@ const advertiseDoNotTrack = (_, res, next) => { | |||
10 | 10 | ||
11 | export { | 11 | export { |
12 | advertiseDoNotTrack | 12 | advertiseDoNotTrack |
13 | } | 13 | } |
diff --git a/server/middlewares/index.ts b/server/middlewares/index.ts index 0cef26953..b758a8586 100644 --- a/server/middlewares/index.ts +++ b/server/middlewares/index.ts | |||
@@ -6,3 +6,5 @@ export * from './pagination' | |||
6 | export * from './servers' | 6 | export * from './servers' |
7 | export * from './sort' | 7 | export * from './sort' |
8 | export * from './user-right' | 8 | export * from './user-right' |
9 | export * from './dnt' | ||
10 | export * from './csp' | ||