@mangadex-pub/nuxt-security
Version:
🛡️ Security Module for Nuxt based on HTTP Headers and Middleware
16 lines (15 loc) • 592 B
JavaScript
import crypto from "node:crypto";
import { defineEventHandler } from "h3";
import { getRouteRules } from "#imports";
export default defineEventHandler((event) => {
let csp = `${event.node.res.getHeader("Content-Security-Policy")}`;
const routeRules = getRouteRules(event);
if (routeRules.security.nonce !== false) {
const nonce = crypto.randomBytes(16).toString("base64");
event.context.nonce = nonce;
csp = csp.replaceAll("{{nonce}}", nonce);
} else {
csp = csp.replaceAll("'nonce-{{nonce}}'", "");
}
event.node.res.setHeader("Content-Security-Policy", csp);
});