Postat acum 1 zi
typescript
// next.config.ts
export default {
async headers() {
return [{
source: "/:path*",
headers: [
{ key: "Strict-Transport-Security", value: "max-age=63072000; includeSubDomains; preload" },
{ key: "X-Content-Type-Options", value: "nosniff" },
{ key: "X-Frame-Options", value: "SAMEORIGIN" },
{ key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
{ key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" },
{ key: "Content-Security-Policy", value: "default-src 'self'; img-src 'self' data: https:; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; font-src 'self' data:;" },
],
}];
},
};De ce contează
Fără aceste headers:
- Poți fi embed-uit într-un
<iframe>malițios (clickjacking) - Un MITM te poate downgrada la HTTP
- Browser-ul ghicește MIME types (atac XSS prin upload PDF cu JS înăuntru)
Verificare rapidă
securityheaders.com — dă-i URL-ul, ia scorul. Țintește minim A.
Gotcha la CSP
Dacă folosești Google Analytics, Tag Manager, Stripe etc., trebuie să le adaugi explicit în script-src și connect-src. Altfel primești erori în consolă și funcții rupte.