diff --git a/packages/adapter-cloudflare-workers/files/shims.js b/packages/adapter-cloudflare-workers/files/shims.js index bda2cf83f667..c9305418f9a8 100644 --- a/packages/adapter-cloudflare-workers/files/shims.js +++ b/packages/adapter-cloudflare-workers/files/shims.js @@ -1 +1 @@ -export const generateCspNonce = () => btoa(crypto.getRandomValues(new Uint32Array(4))); +export const generateRandomString = (bytes) => btoa(crypto.getRandomValues(new Uint8Array(bytes))); diff --git a/packages/adapter-netlify/files/shims.js b/packages/adapter-netlify/files/shims.js index 15d764e7b2e8..8ba825c1bf03 100644 --- a/packages/adapter-netlify/files/shims.js +++ b/packages/adapter-netlify/files/shims.js @@ -1,4 +1,4 @@ import { randomBytes } from 'crypto'; export { fetch, Response, Request, Headers } from '@sveltejs/kit/install-fetch'; -export const generateCspNonce = () => randomBytes(16).toString('base64'); +export const generateRandomString = (bytes) => randomBytes(bytes).toString('base64'); diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js index dba048ff8320..205d0a698667 100644 --- a/packages/adapter-node/src/shims.js +++ b/packages/adapter-node/src/shims.js @@ -2,7 +2,7 @@ import { createRequire } from 'module'; import { randomBytes } from 'crypto'; export { fetch, Response, Request, Headers } from '@sveltejs/kit/install-fetch'; -export const generateCspNonce = () => randomBytes(16).toString('base64'); +export const generateRandomString = (bytes) => randomBytes(bytes).toString('base64'); // esbuild automatically renames "require" // So we still have to use Object.defineProperty here diff --git a/packages/adapter-vercel/files/shims.js b/packages/adapter-vercel/files/shims.js index 15d764e7b2e8..8ba825c1bf03 100644 --- a/packages/adapter-vercel/files/shims.js +++ b/packages/adapter-vercel/files/shims.js @@ -1,4 +1,4 @@ import { randomBytes } from 'crypto'; export { fetch, Response, Request, Headers } from '@sveltejs/kit/install-fetch'; -export const generateCspNonce = () => randomBytes(16).toString('base64'); +export const generateRandomString = (bytes) => randomBytes(bytes).toString('base64'); diff --git a/packages/kit/src/runtime/server/index.js b/packages/kit/src/runtime/server/index.js index d5511f1d9b89..c0a6d386c230 100644 --- a/packages/kit/src/runtime/server/index.js +++ b/packages/kit/src/runtime/server/index.js @@ -39,7 +39,7 @@ export async function respond(incoming, options, state = {}) { let nonce; if (!state.prerender && options.cspNonce) { try { - nonce = generateCspNonce(); + nonce = generateRandomString(16); } catch (e) { if (e instanceof ReferenceError) { console.warn( diff --git a/packages/kit/types/globals.d.ts b/packages/kit/types/globals.d.ts index c643adacc02c..284b099d35d0 100644 --- a/packages/kit/types/globals.d.ts +++ b/packages/kit/types/globals.d.ts @@ -1 +1 @@ -declare const generateCspNonce: () => string; +declare const generateRandomString: (bytes: number) => string;