Appearance
koa-helmet
简介
koa-helmet 是一个通过设置各种 HTTP 头来帮助保护 Koa 应用程序的安全中间件。它可以防止常见的 Web 漏洞,如 XSS 攻击、点击劫持、中间人攻击等。
安装
bash
npm install koa-helmet基本使用
javascript
const Koa = require('koa');
const helmet = require('koa-helmet');
const app = new Koa();
// 注册中间件
app.use(helmet());
app.use(async (ctx) => {
ctx.body = { message: '已启用安全头' };
});
app.listen(3000);高级配置
javascript
const Koa = require('koa');
const helmet = require('koa-helmet');
const app = new Koa();
app.use(helmet({
// 配置内容安全策略 (CSP)
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", 'data:', 'https:']
}
},
// 防止点击劫持
frameguard: {
action: 'deny'
},
// 隐藏 X-Powered-By
hidePoweredBy: true,
// 强制 HTTPS
hsts: {
maxAge: 31536000,
includeSubDomains: true,
preload: true
},
// 防止 XSS 攻击
xssFilter: true,
// 防止 MIME 类型嗅探
noSniff: true,
// 禁止在 iframe 中加载
referrerPolicy: { policy: 'same-origin' }
}));
app.use(async (ctx) => {
ctx.body = { message: '已配置安全策略' };
});
app.listen(3000);默认启用的安全头
- Content-Security-Policy:控制允许加载的资源来源
- X-DNS-Prefetch-Control:控制 DNS 预解析
- Expect-CT:证书透明度监控
- X-Frame-Options:防止点击劫持
- X-Powered-By:隐藏服务器信息
- Strict-Transport-Security:强制使用 HTTPS
- X-XSS-Protection:防止 XSS 攻击
- X-Content-Type-Options:防止 MIME 类型嗅探
注意事项
- 根据应用需求合理配置 CSP,避免过度限制影响功能
- 在使用 WebSocket 或其他特殊功能时,可能需要调整相应的安全策略
- 某些旧版浏览器可能不支持部分安全头
- 建议在生产环境中启用所有安全特性