快速开始

如果您用的是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

如果您用的是Koa那么运行npm install koa-helmet --save,接下来,在您的文件中:

koa-helmet;

"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

很简单,Helmet会设置一些响应头来保护您的App。

文档

最好将app.use(helmet())放在众多中间件的前面以保证响应头能够正确设置。

当然,您还可以像下面这样分别设置:

app.use(helmet.noCache())
app.use(helmet.frameguard())
1
2

您也可以通过传入对象的方式禁用一些默认开启的项目,比方说下面就是禁用了frameguard

app.use(helmet({
  frameguard: false
}))
1
2
3

为中间件设置配置项也是可以的,有一些配置项不论是否是默认值都可以用下面的方式设置:

app.use(helmet({
  frameguard: {
    action: 'deny'
  }
}))
1
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保护措施
上次更新: 1/20/2020, 10:23:23 AM