Skip to content

Commit b1e726e

Browse files
committed
Don't set nonce for default-src or when 'unsafe-inline' or 'unsafe-hashes' is set on script-src or style-src.
1 parent cd31b98 commit b1e726e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/helpers/ContentSecurityPolicy.jsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,17 @@ const devSource = __DEVELOPMENT__
6363
// default-src
6464
if (process.env.RAZZLE_CSP_DEFAULT_SRC) {
6565
metaTags.push(
66-
`default-src ${nonceValue}${devSource}${process.env.RAZZLE_CSP_DEFAULT_SRC}`
66+
`default-src ${devSource}${process.env.RAZZLE_CSP_DEFAULT_SRC}`
6767
);
6868
}
6969

7070
// script-src
7171
if (process.env.RAZZLE_CSP_SCRIPT_SRC) {
72+
const scriptWords = process.env.RAZZLE_CSP_SCRIPT_SRC.split(' ');
73+
const hasUnsafeInline =
74+
scriptWords.includes("'unsafe-inline'") || scriptWords.includes("'unsafe-hashes'");
7275
metaTags.push(
73-
`script-src ${nonceValue}${devSource}${process.env.RAZZLE_CSP_SCRIPT_SRC}`
76+
`script-src ${hasUnsafeInline ? '' : nonceValue}${devSource}${process.env.RAZZLE_CSP_SCRIPT_SRC}`
7477
);
7578
}
7679

@@ -100,7 +103,10 @@ const devSource = __DEVELOPMENT__
100103
if (process.env.RAZZLE_CSP_STYLE_SRC || styleVals.length > 0) {
101104
const styleSrc = process.env.RAZZLE_CSP_STYLE_SRC ?
102105
process.env.RAZZLE_CSP_STYLE_SRC : '';
103-
metaTags.push(`style-src ${nonceValue}${devSource}${styleSrc}${styleVals.join(' ')}`);
106+
const styleWords = styleSrc.split(' ');
107+
const hasUnsafeInline =
108+
styleWords.includes("'unsafe-inline'") || styleWords.includes("'unsafe-hashes'");
109+
metaTags.push(`style-src ${hasUnsafeInline ? '' : nonceValue}${devSource}${styleSrc}${styleVals.join(' ')}`);
104110
}
105111

106112
// Add the standard directives unmodified.

0 commit comments

Comments
 (0)