安全提示工程框架

部署在Cloudflare Workers上的安全加固提示工程框架,提供多层安全控制和结构化提示堆栈。

  • by Chemically-Motivated-Solutions
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 canstralian/promptcrafting-mcp

使用说明

促进mcp的发展

作为Cloudflare Workers上的MCP服务器部署的安全强化快速工程框架。

建筑

┌─────────────────────────────────────────────────────────────────┐
│  B0: Untrusted Zone                                             │
│  Clients, Admin UIs, External IdPs                              │
└──────────────────────────┬──────────────────────────────────────┘
                           │ HTTPS
┌──────────────────────────▼──────────────────────────────────────┐
│  B1: Edge Perimeter (Hono Router on Cloudflare Worker)          │
│  ┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌───────────────┐  │
│  │ CORS     │→│ Rate     │→│ JWT Auth     │→│ RBAC          │  │
│  │ Headers  │ │ Limiter  │ │ (alg pinned) │ │ Enforcement   │  │
│  └──────────┘ └──────────┘ └──────────────┘ └───────────────┘  │
└──────────────────────────┬──────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│  B2: Controlled Execution Plane (McpAgent Durable Object)       │
│  ┌─────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────┐  │
│  │ Input       │→│ Structured   │→│ Sandwich   │→│ Prompt   │  │
│  │ Sanitizer   │ │ Separation   │ │ Defense    │ │ Builder  │  │
│  └─────────────┘ └──────────────┘ └────────────┘ └────┬─────┘  │
│                                                        │        │
│  ┌─────────────┐ ┌──────────────┐ ┌────────────┐      │        │
│  │ HITL Gate   │←│ PII/Toxicity │←│ Output     │←─────┘        │
│  │ (optional)  │ │ Redaction    │ │ Validator  │  ← from B4    │
│  └─────────────┘ └──────────────┘ └────────────┘               │
└──────────────────────────┬──────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│  B3: Data Plane                                                 │
│  ┌───────────────────┐ ┌──────────────────┐ ┌────────────────┐  │
│  │ Workers KV        │ │ D1 / SQLite      │ │ Cold Storage   │  │
│  │ Templates+Versions│ │ Audit Logs       │ │ (Optional S3)  │  │
│  │ HMAC-signed       │ │ Guardrail Events │ │ Compliance     │  │
│  └───────────────────┘ └──────────────────┘ └────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│  B4: Model Execution (Untrusted)                                │
│  Workers AI / External LLM Providers                            │
│  ⚠️  Treat all outputs as untrusted — validate back in B2       │
└─────────────────────────────────────────────────────────────────┘

四层提示堆栈

每个提示都由四个结构化层编译而成:

层 目的 安全角色
目标 任务定义+成功标准 定义允许的范围
角色 Persona+领域上下文 转换模型词汇
约束条件 边界+禁止行为 安全策略执行
输出形状 格式+模式+示例 启用Zod验证

快速开始

# 1. Install dependencies
npm install

# 2. Create Cloudflare resources
wrangler kv namespace create PROMPT_TEMPLATES
wrangler d1 create promptcrafting-audit

# 3. Update wrangler.jsonc with the IDs from step 2

# 4. Set secrets
wrangler secret put JWT_SECRET
wrangler secret put TEMPLATE_HMAC_KEY

# 5. Run D1 migrations
npm run db:migrate

# 6. Deploy
npm run deploy

安全控制

边界 威胁 缓解 状态
B0→B1 欺骗 带算法固定的JWT(仅限HS256) ✅
B0→B1 DoS 身份密钥速率限制(非IP) ✅
B1→B2 权限升级 RBAC与权限检查 ✅
B2 直接提示注入 NFKC+正则表达式+熵分析 ✅
B2 间接注射 结构化分离+三明治防御 ✅
B2 代币走私 隐形字符剥离+规范化 ✅
B3 模板中毒 HMAC-SHA256内容签名 ✅
B3 拒绝 不可篡改的D1审核日志 ✅
B4 提示提取 系统提示中的Canary令牌 ✅
B4→B2 模式漂移 Zod关闭输出验证失败 ✅
B4→B2 PII泄漏 Regex PII检测+编辑 ✅
B4→B2 提示泄漏 系统指令模式检测 ✅
B1 JWT混淆 算法固定、声明验证 ✅
B2 HITL超时/DoS 可配置超时(HITL_TIMEOUT_MS),过期的死信 ✅
B4 响应完整性 TLS证书固定(计划中) 🔲

端点

路径 方法 身份验证 描述
/health GET 否 健康检查
/mcp/* ALL JWT MCP协议(流式HTTP)
/api/v1/templates 获取 JWT+ template:read 列出模板
/api/v1/templates/:id 获取 JWT+ template:read 获取模板
/api/v1/templates/:id 删除 JWT+ template:delete 删除模板
/api/v1/audit 获取 JWT+ audit:read 查询审核日志
/api/v1/hitl 获取 JWT+ hitl:resolve 列出待HITL批准的清单
/api/v1/hitl/:requestId 获取 JWT+ hitl:resolve 获取HITL批准状态
/api/v1/hitl/:requestId/resolve 帖子 JWT+ hitl:resolve 批准或拒绝HITL请求

MCP工具

工具 说明 注释
promptcraft_create_template 创建HMAC签名的四层模板 写入
promptcraft_get_template 检索+验证模板完整性 只读
promptcraft_list_templates 列出分页模板 只读
promptcraft_delete_template 软删除(保留版本) 破坏性
promptcraft_execute_prompt 全管道:消毒→ 编译→ 推断→ 验证 写入
promptcraft_validate_input 模拟运行验证(无推理) 只读
promptcraft_query_audit 使用筛选器查询审计跟踪 只读

项目结构

promptcrafting-mcp/
├── wrangler.jsonc            # Cloudflare config (all bindings)
├── package.json
├── tsconfig.json
├── migrations/
│   └── 0001_init.sql         # D1 schema
└── src/
    ├── index.ts              # Hono router (B1 perimeter)
    ├── mcp-agent.ts          # McpAgent Durable Object (B2)
    ├── types.ts              # Shared type definitions
    ├── schemas/
    │   └── index.ts          # Zod input schemas
    ├── middleware/
    │   └── auth.ts           # JWT, RBAC, rate limiting
    ├── guardrails/
    │   ├── index.ts          # Barrel export
    │   ├── input-sanitizer.ts  # NFKC, injection detection, separation, sandwich
    │   └── output-validator.ts # Schema, PII, leakage, canary
    ├── services/
    │   ├── prompt-builder.ts # Four-layer compiler, HMAC signing
    │   └── audit.ts          # D1 audit trail operations
    └── tools/
        └── prompt-tools.ts   # MCP tool registrations

后续步骤

  • []每个边界的STRIDE威胁模型图
  • [x] HITL门,具有可配置的超时+死信路径
  • []外部模型提供程序的TLS证书固定
  • []与MCP检查员的集成测试
  • []通过KV版本路由提示A/B测试
  • []用于AI集成的Cloudflare防火墙(语义输入/输出扫描)