返回

Express 防护帽 — 为你的 Express 应用注入安全基因

前端

为你的网站带上帽子 — 使用 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。