introduction
为了提高应用的安全性,你能够使用headers
到 next.config.js
中将这些安全头应用到Http 响应头中到引用中的所有路由 ..
// next.config.js
// You can choose which headers to add to the list
// after learning more below.
const securityHeaders = []
module.exports = {
async headers() {
return [
{
// Apply these headers to all routes in your application.
source: '/(.*)',
headers: securityHeaders,
},
]
},
}
选项
X-DNS-Prefetch-Control
这个请求头控制DNS 预抓取,允许浏览器去先执行域名解析(在外部链接,Css,图片,以及更多),这个预抓取是在后台执行的,在需要引用对应的项目时,DNS 能够更快的解析,减少用户点击一个链接的延时 …
{
key: 'X-DNS-Prefetch-Control',
value: 'on'
}
Strict-Transport-Security
这个响应头告诉浏览器应该能够通过Https访问,而不是Http,使用以下配置,素有存在以及未来的后续域名都是用Https(最大时间2年),如果通过http访问页面或者子域将会导致阻止访问 ….
如果你部署在Vercel上,这个header 是不必要的(因为它将自动的增加到所有部署上) …
{
key: 'Strict-Transport-Security',
value: 'max-age=63072000; includeSubDomains; preload'
}
X-XSS-Protection
这个头将停止页面被加载(当它们检测到跨域站点脚本攻击(XSS),尽管这个保护不是必要的(如果站点实现了一个强壮的Content-Security-Policy(禁用内联脚本的使用unsafe-inline
),它能够提供对不支持CSP的旧版本浏览器的保护 …
{
key: 'X-XSS-Protection',
value: '1; mode=block'
}
X-Frame-Options
这个请求头指示一个站点是否允许在iframe
标签中使用,这能够保护点击劫持攻击 … 这个请求头已经CSP的frame-ancestors
选项取代(但是对于不支持CSP的浏览器也是必须的)
{
key: 'X-Frame-Options',
value: 'SAMEORIGIN'
}
Permissions-Policy
这个请求头允许你控制那些特性以及API 能够使用在浏览器中,它之前的名称是Feature-Policy
,你能够浏览完整的权限选项(here) …
{
key: 'Permissions-Policy',
value: 'camera=(), microphone=(), geolocation=(), interest-cohort=()'
}
这些权限是浏览器提供用来调用操作系统底层的东西 ..
X-Content-Type-Options
这个请求头阻止了浏览器尝试猜测内容的类型(假设Content-Type
请求头没有显式的设置,这能够阻止XSS 漏洞(exploits)(允许用户上传并共享文件) … 举个例子,一个用户尝试去下载一个图片,但是这个所谓的图片可能具有不同的Content-Type
(也许它能够被执行),那么这可能很危险,这个请求头也能够应用到下载浏览器扩展中,这个请求头的唯一有效值是nosniff
…
{
key: 'X-Content-Type-Options',
value: 'nosniff'
}
Referrer-Policy
这个请求头控制浏览器包括那些信息(当从当前web站点导航到另一个的时候),你能够读取有关不同的选项here.
{
key: 'Referrer-Policy',
value: 'origin-when-cross-origin'
}
Content-Security-Policy
这个请求头帮助保护XSS(cross-site scripting) 攻击,点击劫持以及其他代码注入攻击,Content Security Plicy(CSP)能够指定允许的来源的内容是允许的(包括脚本,样式,图片,字体,对象,媒体(音频/视频),以及iframes以及更多 ..
你能够读取CSP的各种选项 ..here.
{
key: 'Content-Security-Policy',
value: // Your CSP Policy
}