返回
Express 防护帽 — 为你的 Express 应用注入安全基因
前端
2023-11-01 02:29:41
为你的网站带上帽子 — 使用 helmet 保护 Express 应用
Express 基于 Node.js,是一款用于构建 Web 服务的优秀框架。它很容易上手,且得益于其中间件的概念,可以很方便地进行配置与拓展。尽管现在有各种各样的用于创建 Web 应用的框架,但我的第一选择始终是 Express。然而,直接使用 Express 不能完全遵循安全原则。
Helmet 是一个用于 Express 的安全中间件,它可以轻松保护你的网站,免受各种攻击,例如跨站脚本攻击(XSS)和跨站请求伪造攻击(CSRF)。使用 Helmet,你可以轻松地为你的网站添加各种安全 HTTP 头,而无需手动编写代码。
Helmet 提供的安全 HTTP 头
Helmet 提供了多种安全 HTTP 头,可以帮助保护你的网站。这些头包括:
- Content-Security-Policy (CSP) :CSP 可以限制你的网站可以加载的脚本、样式表和图像。这可以防止 XSS 攻击。
- X-XSS-Protection :X-XSS-Protection 可以防止反射型和存储型 XSS 攻击。
- X-Frame-Options (XFO) :XFO 可以防止你的网站被加载到其他网站的 iframe 中。这可以防止点击劫持攻击。
- X-Content-Type-Options (X-CTO) :X-CTO 可以防止你的网站的 MIME 类型被改变。这可以防止文件类型混淆攻击。
- Referrer-Policy :Referrer-Policy 可以控制浏览器在发送请求时发送的引荐信息。这可以防止跨站请求伪造攻击(CSRF)。
使用 Helmet 保护 Express 应用
安装 Helmet 非常简单,只需运行以下命令:
npm install helmet
安装完成后,你可以在你的 Express 应用中使用 Helmet。以下是一个例子:
const helmet = require('helmet');
const app = express();
app.use(helmet());
app.listen(3000);
Helmet 为你添加的安全 HTTP 头的示例:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:;
Helmet 的配置选项
Helmet 提供了许多配置选项,你可以根据你的需要进行配置。以下是一些常用的配置选项:
- contentSecurityPolicy :CSP 的配置选项。
- crossOriginEmbedderPolicy :COEP 的配置选项。
- crossOriginOpenerPolicy :COOP 的配置选项。
- crossOriginResourcePolicy :CORP 的配置选项。
- dnsPrefetchControl :DNSPrefetchControl 的配置选项。
- expectCt :Expect-CT 的配置选项。
- featurePolicy :Feature-Policy 的配置选项。
- frameguard :XFO 的配置选项。
- hidePoweredBy :X-Powered-By 的配置选项。
- hsts :HSTS 的配置选项。
- ieNoOpen :IE-No-Open 的配置选项。
- noSniff :X-Content-Type-Options 的配置选项。
- originAgentCluster :Origin-Agent-Cluster 的配置选项。
- permittedCrossDomainPolicies :Permitted-Cross-Domain-Policies 的配置选项。
- referrerPolicy :Referrer-Policy 的配置选项。
- xssFilter :X-XSS-Protection 的配置选项。
结论
Helmet 是一个非常有用的安全中间件,可以轻松地保护你的网站。它提供了多种安全 HTTP 头,可以帮助你防止 XSS 攻击、CSRF 攻击和其他安全威胁。强烈建议你在你的 Express 应用中使用 Helmet。