AikidoSec/firewall-node

GitHub: AikidoSec/firewall-node

Zen 是一款面向 Node.js 应用的嵌入式运行时防火墙,通过数据流追踪技术在应用内部自动拦截 SQL 注入、SSRF 等各类 Web 攻击。

Stars: 165 | Forks: 40

![Zen by Aikido for Node.js](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2784b84493014630.svg) # Zen,Node.js 应用内防火墙 | 由 Aikido 提供 [![NPM Version](https://img.shields.io/npm/v/%40aikidosec%2Ffirewall?style=flat-square)](https://www.npmjs.com/package/@aikidosec/firewall) [![Codecov](https://img.shields.io/codecov/c/github/AikidoSec/firewall-node?style=flat-square&token=AJK9LU35GY)](https://app.codecov.io/gh/aikidosec/firewall-node) [![NPM License](https://img.shields.io/npm/l/%40aikidosec%2Ffirewall?style=flat-square)](https://github.com/AikidoSec/firewall-node/blob/main/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Unit tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c80bc00918014631.svg)](https://github.com/AikidoSec/firewall-node/actions/workflows/unit-test.yml) [![End to end tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c3dae8eb00014633.svg)](https://github.com/AikidoSec/firewall-node/actions/workflows/end-to-end-tests.yml) Zen,您的应用内防火墙,在运行时为您带来安心。 由 Aikido 提供的 Zen 是一款嵌入式 Web 应用防火墙,能够自动保护 Node.js 应用免受常见和关键攻击的侵害。 它通过扫描用户输入以及这些数据最终流向的位置来保护您的 Node.js 应用,从而让 Zen 能够更精准地拦截 SQL 注入、路径遍历攻击等。它与您的 Node.js 应用运行在同一台服务器上,因此[安装](#installation)简单且无需维护。 ## 功能 Zen 将自动保护您的 Node.js 应用免受以下攻击: - 🛡️ [NoSQL 注入攻击](https://www.aikido.dev/blog/web-application-security-vulnerabilities) - 🛡️ [SQL 注入攻击](https://www.aikido.dev/blog/the-state-of-sql-injections) - 🛡️ [命令注入攻击](https://www.aikido.dev/blog/command-injection-in-2024-unpacked) - 🛡️ [原型污染](./docs/prototype-pollution.md) - 🛡️ [路径遍历攻击](https://owasp.org/www-community/attacks/Path_Traversal) - 🛡️ [服务器端请求伪造 (SSRF)](./docs/ssrf.md) - 🛡️ [攻击波检测](https://help.aikido.dev/zen-firewall/zen-features/attack-wave-protection) - 🛡️ JS 注入 - 🛡️ [IDOR 攻击](./docs/idor-protection.md)(可选,请参阅设置指南) Zen 与您的 Node.js 应用运行在同一台服务器上,通过以下方式自主运行: - ✅ 像传统 Web 应用防火墙 (WAF) 一样保护您的应用,但无需任何基础设施或成本。 - ✅ 自动生成 API 规范 - ✅ 拦截已知的威胁行为者和机器人。 - ✅ 地理围栏,用于拦截或允许选定的国家/地区 - ✅ 按 IP 或用户对特定 API 端点进行速率限制 - ✅ 允许您手动拦截特定用户 ## 支持的库和框架 适用于 Node.js 16+ 的 Zen 兼容以下内容: ### Web 框架 - ✅ [Express](docs/express.md) 4.x, 5.x - ✅ [Hono](docs/hono.md) 4.x - ✅ [hapi](docs/hapi.md) 21.x - ✅ [micro](docs/micro.md) 10.x - ✅ [Next.js](docs/next.md) 12.x, 13.x 和 14.x - ✅ [Fastify](docs/fastify.md) 4.x 和 5.x - ✅ [Koa](docs/koa.md) 3.x 和 2.x - ✅ [NestJS](docs/nestjs.md) 10.x 和 11.x - ✅ [Restify](docs/restify.md) 11.x, 10.x, 9.x 和 8.x ### 数据库驱动 - ✅ [`mongodb`](https://www.npmjs.com/package/mongodb) 4.x, 5.x, 6.x 和 7.x _(npm 包版本,而非 MongoDB 服务器版本)_ - ✅ [`mongoose`](https://www.npmjs.com/package/mongoose) 8.x, 7.x 和 6.x - ✅ [`pg`](https://www.npmjs.com/package/pg) 8.x 和 7.x - ✅ [`mysql`](https://www.npmjs.com/package/mysql) 2.x - ✅ [`mysql2`](https://www.npmjs.com/package/mysql2) 3.x - ✅ [`mariadb`](https://www.npmjs.com/package/mariadb) 3.x(3.5+ 版本需要 ESM 插桩) - ✅ [`sqlite3`](https://www.npmjs.com/package/sqlite3) 6.x 和 5.x - ✅ [`node:sqlite`](https://nodejs.org/api/sqlite.html) - ✅ [`better-sqlite3`](https://www.npmjs.com/package/better-sqlite3) 12.x, 11.x, 10.x, 9.x 和 8.x - ✅ [`postgres`](https://www.npmjs.com/package/postgres) 3.x - ✅ [`@clickhouse/client`](https://www.npmjs.com/package/@clickhouse/client) 1.x - ✅ [`@prisma/client`](https://www.npmjs.com/package/@prisma/client) 5.x ### 云服务提供商 - ✅ [`@google-cloud/functions-framework`](https://www.npmjs.com/package/@google-cloud/functions-framework) 5.x, 4.x 和 3.x - ✅ [`@google-cloud/pubsub`](https://www.npmjs.com/package/@google-cloud/pubsub) 5.x, 4.x - ✅ Google Cloud Functions - ✅ AWS Lambda ### ORM 和查询构建器 有关支持的数据库驱动,请参阅上面的列表。 - ✅ [`sequelize`](https://www.npmjs.com/package/sequelize) - ✅ [`knex`](https://www.npmjs.com/package/knex) - ✅ [`typeorm`](https://www.npmjs.com/package/typeorm) - ✅ [`bookshelf`](https://www.npmjs.com/package/bookshelf) - ✅ [`drizzle-orm`](https://www.npmjs.com/package/drizzle-orm) - ✅ [`kysely`](https://www.npmjs.com/package/kysely) ### API 工具 - ✅ [`graphql`](https://www.npmjs.com/package/graphql) 15.x, 16.x ### 数据序列化工具 - ✅ [`xml2js`](https://www.npmjs.com/package/xml2js) 0.6.x, 0.5.x, ^0.4.18 - ✅ [`fast-xml-parser`](https://www.npmjs.com/package/fast-xml-parser) 5.x, 4.x - ✅ [`xml-js`](https://www.npmjs.com/package/xml-js) 1.x ### Shell 工具 - ✅ [`ShellJS`](https://www.npmjs.com/package/shelljs) 0.9.x, 0.8.x, 0.7.x ### 路由器 - ✅ [`@koa/router`](https://www.npmjs.com/package/@koa/router) 14.x, 13.x, 12.x, 11.x 和 10.x ### AI SDK Zen 对以下 AI SDK 进行插桩,以跟踪使用了哪些模型以及消耗了多少 token,从而让您监控 AI 的使用情况和成本: - ✅ [`openai`](https://www.npmjs.com/package/openai) 6.x, 5.x, 4.x - ✅ [`@mistralai/mistralai`](https://www.npmjs.com/package/@mistralai/mistralai) 1.x - ✅ [`@anthropic-ai/sdk`](https://www.npmjs.com/package/@anthropic-ai/sdk) ^0.40.x - ✅ [`@aws-sdk/client-bedrock-runtime`](https://www.npmjs.com/package/@aws-sdk/client-bedrock-runtime) 3.x - ✅ [`ai`](https://www.npmjs.com/package/ai) 6.x, 5.x, 4.x - ✅ [`@google/genai`](https://www.npmjs.com/package/@google/genai) ^1.6.0 _注意:Zen 目前不涵盖提示词注入攻击。_ ## 安装说明 我们建议在部署到生产环境之前,先在本地或 staging 环境中测试 Zen。 ``` # --save-exact 确保你不会自动安装更新版本 $ npm install --save-exact @aikidosec/firewall # --exact 确保你不会自动安装更新版本 $ yarn add --exact @aikidosec/firewall ``` 如需特定框架和提供商的说明,请查看我们的文档: - [Express](docs/express.md) - [Fastify](docs/fastify.md) - [Hapi](docs/hapi.md) - [Koa](docs/koa.md) - [Hono](docs/hono.md) - [NestJS](docs/nestjs.md) - [micro](docs/micro.md) - [Next.js](docs/next.md) - [Restify](docs/restify.md) - [AWS Lambda](docs/lambda.md) - [Google Cloud Functions](docs/cloud-functions.md) - [Google Cloud Pub/Sub](docs/pubsub.md) ## 指南 - [故障排除](docs/troubleshooting.md) — 常见问题以及如何调试 Zen - [ESM 支持](docs/esm.md) — 针对原生 ECMAScript 模块应用的设置 - [打包工具](docs/bundler.md) — 在 esbuild 和其他打包工具中使用 Zen - [代理 / IP 标头](docs/proxy.md) — 配置负载均衡器后的客户端 IP 检测 - [设置当前用户](docs/user.md) — 识别用户以进行速率限制、拦截和攻击报告 - [IDOR 保护](docs/idor-protection.md) — 防止多租户应用中的数据泄露 ## 向您的 Aikido Security 仪表板报告 Zen 通过在生产环境中提供安全性来增强 Aikido 的服务。将 API 规范的自动生成与我们的 API 扫描服务结合使用,以获得更佳的 API 安全性。 只有必要的数据才会报告回 Aikido,我们在本地扫描您的请求,并且仅每 10 分钟报告一次数据。 如果检测到针对您的应用的攻击,我们会立即报告,以便您迅速采取行动。 您可以在我们的仪表板内精心策划的列表中轻松选择要拦截的 IP 地址和/或机器人。 您将需要一个 Aikido 账户和一个 token 才能向 Aikido 报告事件。如果您没有账户,可以[免费注册](https://app.aikido.dev/login)。(无需信用卡) 方法如下: - [登录您的 Aikido 账户](https://app.aikido.dev/login)。 - 前往 [Zen](https://app.aikido.dev/runtime/services)。 - 前往 apps。 - 点击 **Add app**。 - 为您的应用选择一个名称。 - 点击 **Generate token**。 - 复制该 token。 - 使用 [dotenv](https://github.com/motdotla/dotenv) 或您选择的其他方法,将该 token 设置为环境变量 `AIKIDO_TOKEN`。 ## 在生产(拦截)模式下运行 默认情况下,Zen 仅检测并向 Aikido 报告攻击。 要拦截请求,请将环境变量 `AIKIDO_BLOCK` 设置为 `true`。 请参阅[向 Aikido 报告](#reporting-to-your-aikido-security-dashboard)以了解如何向 Aikido 发送事件。 ## 其他配置 [使用环境变量配置 Zen,以进行身份验证、模式设置、调试等。](https://help.aikido.dev/doc/configuration-via-env-vars/docrSItUkeR9) ## 许可证 本程序在商业许可和 AGPL 许可下提供。 通过购买商业许可,您可以免除 AGPL 许可的要求。 一旦您在不公开自己应用源代码的情况下开发涉及 Zen 软件的商业活动,则必须购买此类许可。 如需更多信息,请通过以下地址联系 Aikido Security:support@aikido.dev 或在 https://app.aikido.dev 创建一个账户。 ## 基准测试 我们在每次提交时都会运行基准测试,以确保 Zen 对您的应用性能影响最小。 请参阅[基准测试](benchmarks) ## 漏洞赏金计划 我们的漏洞赏金计划是公开的,所有注册的 Intigriti 用户都可以在以下地址找到:https://app.intigriti.com/researcher/programs/aikido/aikidoruntime ## 行为准则 请参阅 [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) 以了解更多信息。 ## 安全 请参阅 [SECURITY.md](.github/SECURITY.md) 以了解更多信息。
标签:Aikido, AppImage, CISA项目, DevSecOps, MITM代理, Node.js安全, NoSQL注入, OpenCanary, RASP, SQL注入防护, WAF, Web应用防火墙, 上游代理, 中间件, 代码安全, 原型污染防护, 后端安全, 命令注入, 密码管理, 开源安全工具, 测试用例, 漏洞枚举, 漏洞防护, 网络安全, 网络安全审计, 自动化攻击, 自动防御, 路径遍历防护, 运行时防护, 逆向工程平台, 隐私保护