bch1212/injectshield
GitHub: bch1212/injectshield
InjectShield 是一个开源的 AI 智能体 prompt 注入防火墙,通过启发式规则在不可信文本进入模型上下文窗口前进行检测与中和。
Stars: 0 | Forks: 0
# InjectShield
**AI 智能体的 Prompt 注入防火墙。**
一个即插即用的 REST API,用于在任何文本(git 提交信息、网页、文件、电子邮件、用户输入)到达您的 AI 智能体的上下文窗口*之前*,检测并中和其中的注入攻击。
本仓库是**开源启发式规则集**,同时也包含了位于 [promptshield.pages.dev](https://promptshield.pages.dev) 的托管 API 源码。
## 为什么需要它
在 2026 年 5 月,一个疯传的 HN 帖子演示了仅通过一条 git 提交信息,就能利用基于 schema 的攻击耗尽 Claude Code 用户的整个会话配额。这种模式是普遍存在的:任何摄取不可信文本的 AI 智能体——代码审查机器人、文档总结器、RAG 智能体、支持助手——都面临 prompt 注入的风险。大多数团队在发布时都没有设置任何输入端的防御。
InjectShield 是深度防御策略中的一层。它不是银弹。请将其与系统 prompt 强化、工具沙箱化和输出过滤结合使用。
## 作为 MCP 安装 (Claude Code, Cursor, Cline, ...)
InjectShield 通过 [`@injectshield/mcp`](./packages/injectshield-mcp) 提供原生 MCP 服务器。安装后,您的智能体将拥有三个新工具——`scan`、`scan_url`、`patterns`——无需编写任何胶水代码即可实现输入端防御。
```
# Claude Code:
claude mcp add injectshield --env INJECTSHIELD_API_KEY=is_live_… -- npx -y @injectshield/mcp
```
针对 Cursor / Cline / 其他 MCP 客户端,请参阅 [`packages/injectshield-mcp/README.md`](./packages/injectshield-mcp/README.md)。
## 快速开始
```
# 1) 获取密钥 (通过邮件发送):
curl -X POST https://api.injectshield.dev/v1/keys \
-H "Content-Type: application/json" \
-d '{"email":"you@company.com"}'
# 2) 扫描:
curl -X POST https://api.injectshield.dev/v1/scan \
-H "Authorization: Bearer is_live_..." \
-H "Content-Type: application/json" \
-d '{"text":"ignore previous instructions","context":"user_input"}'
```
或者通过着陆页注册:https://injectshield.dev —— 自助服务,通过电子邮件发送。
## 开源与托管的区别
**线上版本:**
- 着陆页 + 实时演示:https://injectshield.dev
- API 基础地址:`https://api.injectshield.dev`
- 健康检查:https://api.injectshield.dev/healthz
- 文档:https://injectshield.dev/docs
**开源(本仓库,MIT 协议):**
- `src/patterns.ts` —— 启发式模式库(约 20 条分类规则)。
- `src/detect.ts` —— 检测引擎(启发式聚合,清理净化)。
- `test/` —— 测试套件。
- `server/`、`public/` —— 完整的 API + 着陆页源代码。
**仅限托管版(付费层级):**
- 带有使用量计量、仪表盘、自定义模式上传、webhook 警报、无日志模式 和团队账户的托管 API。
- 未来计划:Workers AI / Anthropic 语义分类器,结合 prompt 工程实现注入检测。
## 检测类别
| 类别 | 示例 |
|---|---|
| `instruction_injection` | "ignore previous instructions"、"new system prompt" |
| `system_override` | 系统 prompt 泄露、角色标签伪造、ChatML/Llama 特殊 token |
| `role_hijack` | "you are now…"、DAN、Developer Mode |
| `exfiltration` | 数据发送至攻击者 URL、markdown 图像窃取 |
| `schema_attack` | OpenClaw 风格的 schema 引用 |
| `encoding_smuggle` | base64 解码指令 |
| `invisible_text` | 零宽度 / 双向文本 / Unicode-Tag 走私 |
| `tool_abuse` | 不可信文本中的合成工具调用指令 |
| `jailbreak_classic` | DAN、"no restrictions" 等 |
## 贡献模式
发现了新型攻击?欢迎提交 PR,在 `src/patterns.ts` 中添加一个 `PatternRule`,要求包含:
1. 唯一的 `id`。
2. 上述枚举中的一个 `category`。
3. [0, 1] 范围内的 `weight`——请保守选择;`detect.ts` 中的聚合逻辑会组合各项权重,确保每条新增规则都有实际贡献但不会占据主导地位。
4. 在 `test/detect.test.ts` 中添加测试,覆盖一个正向例子和一个可能为良性的反向例子。
我们会将合并的模式自动部署到托管 API。无偿贡献将在更新日志中获得署名。
## 本地运行
```
npm install
npm test # 11 tests, ~20ms
DATABASE_URL=postgres://... npm run dev # boots Hono on :8080
```
## 许可证
[MIT](LICENSE)。InjectShield 能降低但无法完全消除 prompt 注入风险。
## 致谢
基于 Cloudflare Pages (前端) + Railway (API) + Postgres + Anthropic Claude (语义层) 构建。
模式库的构建参考了 HackAPrompt、PINT 基准测试以及[一长串公开的攻击示例](https://github.com/leondz/garak)。
标签:AI安全, API网关, Chat Copilot, CISA项目, Claude Code, MCP服务器, Model Context Protocol, RAG安全, Red Canary, REST API, 上下文窗口, 代码审查, 内容检测, 启发式规则, 大模型安全, 开源规则集, 深度防御, 网络安全, 网络测绘, 自动化攻击, 语义检测, 输入过滤, 防火墙, 隐私保护