Files
LEAKHUB/security-headers.js

72 lines
1.9 KiB
JavaScript

// Security Headers Configuration for LeakHub
// Add these headers to your web server or CDN configuration
const securityHeaders = {
// Prevent XSS attacks
'X-XSS-Protection': '1; mode=block',
// Prevent MIME type sniffing
'X-Content-Type-Options': 'nosniff',
// Prevent clickjacking
'X-Frame-Options': 'DENY',
// Strict transport security (HTTPS only)
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload',
// Content Security Policy
'Content-Security-Policy': [
"default-src 'self'",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com",
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data: https:",
"font-src 'self'",
"connect-src 'self'",
"frame-ancestors 'none'",
"base-uri 'self'",
"form-action 'self'"
].join('; '),
// Referrer Policy
'Referrer-Policy': 'strict-origin-when-cross-origin',
// Permissions Policy
'Permissions-Policy': 'geolocation=(), microphone=(), camera=()',
// Cache Control for sensitive pages
'Cache-Control': 'no-store, no-cache, must-revalidate, proxy-revalidate',
'Pragma': 'no-cache',
'Expires': '0'
};
// For different deployment platforms:
// Vercel (vercel.json)
const vercelConfig = {
headers: Object.entries(securityHeaders).map(([key, value]) => ({
source: '/(.*)',
headers: [{ key, value }]
}))
};
// Netlify (netlify.toml)
const netlifyHeaders = Object.entries(securityHeaders).map(([key, value]) => ({
for: '/*',
[key.toLowerCase()]: value
}));
// Express.js middleware
function securityMiddleware(req, res, next) {
Object.entries(securityHeaders).forEach(([key, value]) => {
res.setHeader(key, value);
});
next();
}
module.exports = {
securityHeaders,
vercelConfig,
netlifyHeaders,
securityMiddleware
};