fix(security): apply security hardening recommendations from audit

This commit implements several security enhancements based on the findings of a new security audit report, which has also been added to the documentation.

- **Security Headers:** Adds a strict Content-Security-Policy (CSP) and other security headers (X-Content-Type-Options, Referrer-Policy) via Nuxt route rules.
- **Production Hardening:** Disables Nuxt DevTools in production environments to reduce the attack surface.
- **Mixed Content:** All image assets are now loaded over HTTPS to resolve mixed content issues.
- **Tabnabbing:** Secures `window.open` calls by adding `noopener,noreferrer`.
- **Configuration:** Updates `.gitignore` to ignore all `.env.*` files.
- **Docs:** Adds the full security audit report for reference.
- **Build:** Corrects a case-sensitive import path to ensure cross-platform build compatibility.
This commit is contained in:
xiaomai
2025-11-07 11:15:02 +08:00
parent ccfd268682
commit cc0cb01d28
7 changed files with 222 additions and 14 deletions

View File

@@ -11,7 +11,7 @@ const DEFAULT_SEO = {
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: "2025-07-15",
devtools: { enabled: true },
devtools: { enabled: process.env.NODE_ENV !== "production" },
modules: [
"@nuxt/content",
"@nuxt/ui",
@@ -24,6 +24,26 @@ export default defineNuxtConfig({
whatsappNumber: "+601234567890",
},
},
routeRules: {
"/**": {
headers: {
"Content-Security-Policy": [
"default-src 'self'",
"script-src 'self'",
"style-src 'self' 'unsafe-inline'",
"img-src 'self' https://img.tootaio.com data:",
"connect-src 'self'",
"frame-ancestors 'self'",
"upgrade-insecure-requests",
].join("; "),
"X-Content-Type-Options": "nosniff",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
},
"/_nuxt/**": {
headers: { "cache-control": "public, max-age=31536000, immutable" },
},
},
css: ["@/assets/css/main.css"],
app: {
head: {