介绍
API 安全是指保护我们使用或创建的 API 的完整性。如今,大多数公司都使用 API 来连接服务和传输数据。如果 API 遭到破坏、泄露或黑客攻击,就会导致数据泄露。因此,我们需要根据传输的信息来考虑在应用程序中实施所需的 API 安全级别。在本文中,我将介绍一些有用的 npm 包,它们可以帮助我们避免常见的安全问题。.
1. 使用头盔
Helmet.js 这是一个用于保护HTTP标头的Node.js模块。该模块用于Express应用程序中,通过设置各种HTTP标头来防止跨站脚本攻击(XSS)和点击劫持等攻击。.
为什么保护HTTP标头很重要?
大多数开发者都会忽略 HTTP 标头。这些标头可能会泄露服务器、软件版本甚至应用程序结构的敏感信息。这就是为什么使用 Helmet.js 之类的工具如此重要的原因。.
重要的 Helmet.js 模块
- X-Frame-Options: 通过阻止页面在 iFrame 中显示来防止点击劫持。.
- 内容安全策略: 设置安全策略以防止注入未经授权的脚本。.
- 缓存控制: 禁用敏感信息的客户端缓存。.
- 预期-CT: 确保SSL证书的透明度。.
- X-Powered-By: 删除显示服务器软件信息的标头。.
- X-XSS 防护: 启用浏览器对 XSS 攻击的防护。.
- 严格的运输安全措施: 强制浏览器使用HTTPS。.
要开始使用 Helmet.js,只需安装此模块并在您的 Express 应用程序中使用它即可。.
const helmet = require('helmet'); const express = require('express'); const app = express(); app.use(helmet());
2. 安全使用 Cookie
为确保 cookie 不会导致应用程序漏洞,请停止使用会话 cookie 的默认名称,并适当设置 cookie 安全选项。.
常见的 Cookie 问题
如果 Cookie 设置不正确,它们很容易成为跨站脚本攻击或信息泄露的目标。使用精确的 Cookie 设置可以降低这些风险。.
推荐设置
- 安全的: 请确保仅通过HTTPS发送cookie。.
- httpOnly: 限制客户端 JavaScript 对 cookie 的访问权限。.
- 领域: 请指定有效的 cookie 域名。.
- 小路: 限制 cookie 的有效路径。.
- 到期日: 为持久性 cookie 设置过期日期。.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));3. 防止 NoSQL 注入
NoSQL注入是一种针对使用NoSQL数据库的应用程序的常见攻击。这种攻击可能允许攻击者窃取敏感信息。.
解决方案
使用包 express-mongo-sanitize 您可以对传入数据进行清理,从而防止此类攻击。.
$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());4. 防止ReDoS攻击
正则表达式中的 ReDoS 或拒绝服务攻击可能会导致服务器性能下降。来自该工具 安全正则表达式 使用正则表达式检查它们是否安全。.
例子
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));5. 防止 CSRF 攻击
为了保护您的应用程序免受 CSRF 攻击(攻击者可以通过合法浏览器发送恶意请求),请使用该模块。 csurf 使用。.
const csrf = require('csurf');
app.use(csrf());









