23 lines
839 B
JavaScript
23 lines
839 B
JavaScript
const securityHeaders = [
|
|
{ key: 'X-Content-Type-Options', value: 'nosniff' },
|
|
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
|
|
// The dashboard is never meant to be shown inside another site
|
|
{ key: 'X-Frame-Options', value: 'DENY' },
|
|
{ key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=(), payment=()' },
|
|
{ key: 'Strict-Transport-Security', value: 'max-age=31536000' },
|
|
];
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
poweredByHeader: false,
|
|
async headers() {
|
|
return [
|
|
{ source: '/:path*', headers: securityHeaders },
|
|
// Private pages: also keep them out of search engines that ignore robots.txt
|
|
{ source: '/dashboard/:path*', headers: [{ key: 'X-Robots-Tag', value: 'noindex, nofollow' }] },
|
|
];
|
|
},
|
|
};
|
|
|
|
module.exports = nextConfig;
|