快速开始
如果您用的是Express运行npm install helmet --save
,接下来,在您的文件中:
const express = require('express')
const helmet = require('helmet');
const app = express()
app.use(helmet())
// ...
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
如果您用的是Koa那么运行npm install koa-helmet --save
,接下来,在您的文件中:
"use strict";
const Koa = require("koa");
const helmet = require("koa-helmet");
const app = new Koa();
app.use(helmet());
app.use((ctx) => {
ctx.body = "Hello World"
});
app.listen(4000);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
很简单,Helmet会设置一些响应头来保护您的App。
文档
最好将app.use(helmet())
放在众多中间件的前面以保证响应头能够正确设置。
当然,您还可以像下面这样分别设置:
app.use(helmet.noCache())
app.use(helmet.frameguard())
1
2
2
您也可以通过传入对象的方式禁用一些默认开启的项目,比方说下面就是禁用了frameguard
:
app.use(helmet({
frameguard: false
}))
1
2
3
2
3
为中间件设置配置项也是可以的,有一些配置项不论是否是默认值都可以用下面的方式设置:
app.use(helmet({
frameguard: {
action: 'deny'
}
}))
1
2
3
4
5
2
3
4
5
Express
如果您使用的是 Express 3, 请将中间件放在app.router
之前。
Koa
为了让helmet的HSTS模块能正常工作,koa-helmet向this.request
中增加了secure
配置项(布尔值)以判断是否为HTTP请求。
工作原理
Helmet是14个设置HTTP响应头的小型中间件的集合。在默认情况下,app.use(helmet())
并不会应用其中的所有中间件。
它所涵盖的中间件如下:
模块(Module) | 默认启用 |
---|---|
contentSecurityPolicy用于设置内容安全策略 | |
crossdomain用于处理Adobe产品的跨域请求 | |
dnsPrefetchControl用于控制浏览器的DNS预解析 | ✅ |
expectCt用于处理证书的透明度 | |
featurePolicy用于限制浏览器可用的功能 | |
frameguard用于阻止点击劫持 | ✅ |
hidePoweredBy移除X-Powered-By 响应头 | ✅ |
hsts用于设置HTTP Strict Transport Security | ✅ |
ieNoOpen为IE8以上浏览器设置X-Download-Options | ✅ |
noCache用于禁用客户端缓存 | |
noSniff用于禁用浏览器嗅探 | ✅ |
referrerPolicy用于隐藏Referrer 报头 | |
xssFilter添加一些XSS保护措施 | ✅ |