在 Web 开发中,确保应用程序安全是至关重要的。Helmet 是一个 Node.js 包,可帮助在 Express 应用程序中轻松实现一些常见的安全性设置。
安装和配置 Helmet
首先,使用 npm 在项目中安装 Helmet:
npm install helmet
然后在 Express 应用程序中启用它。这可以通过简单地将它作为中间件加载来完成:
const express = require('express'); const helmet = require('helmet'); const app = express(); app.use(helmet());
一旦启用了 Helmet,它会自动执行各种安全设置,如添加适当的 HTTP 标头等。
Helmet 中的默认设置
下面是 Helmet 默认情况下启用的几个安全设置:
hidePoweredBy
hidePoweredBy
中间件删除响应头中的 X-Powered-By
,这样攻击者就无法识别出你的应用所使用的技术栈。
app.use(helmet.hidePoweredBy());
frameguard
frameguard
中间件可防止点击劫持攻击。它会向响应头添加 X-Frame-Options,并始终将其设置为 DENY。
app.use(helmet.frameguard({ action: 'deny' }));
xssFilter
xssFilter
中间件可在用户输入数据中检测和删除跨站点脚本攻击 (XSS)。它会将 X-XSS-Protection 头设置为 1; mode=block。
app.use(helmet.xssFilter());
noSniff
noSniff
中间件可防止浏览器执行 MIME 类型嗅探攻击。它会将 X-Content-Type-Options 头设置为 nosniff。
app.use(helmet.noSniff());
还有其他一些默认设置(如 dnsPrefetchControl
、referrerPolicy
等)可以在 Helmet 文档中查看。
自定义 Helmet 设置
除了默认设置外,Helmet 还允许开发人员自定义设置。例如,以下代码将启用 CSP (内容安全策略):
app.use(helmet.contentSecurityPolicy({ directives: { defaultSrc: ["'self'"], styleSrc: ["'self'", 'stackpath.bootstrapcdn.com'] } }));
此代码为所有脚本来源和样式来源添加白名单。只有来自应用程序自身和 stackpath.bootstrapcdn.com 的脚本和样式才能加载。
结论
使用 Helmet 可以轻松地增强 Express 应用程序的安全性。在你的下一个项目中,给它一个尝试吧!
完整示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------ - ------------------ ----- --- - ---------- ------------------ ------------ ----- ---- -- - --------------- --------- --- ---------------- -- -- - ---------------- --------- -- ---- -------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/53419