🌐 中文 · English
「让 AI 写代码前先过一遍安全闸门。」
把登录、权限、支付、上传、OSS、移动端、AI Agent 和隐私风险,变成 AI 写代码时必须回答的上线门禁。
作者 / Maintainer:AiyaFun
你让 AI 写一个接口,它可能功能跑通了,但顺手留下 SQL 注入、越权、JWT 泄露、支付金额篡改、OSS 公开、日志泄露手机号,或者让 AI Agent 被文档里的 prompt 注入牵着走。
Security skill 的作用不是把 AI 变成“安全专家演讲家”,而是在开发过程中强制它先识别资产、角色、信任边界,再按对应清单做加固,并用 通过 / 有条件通过 / 阻止上线 给出发布结论。
它特别适合中文团队的真实业务栈:微信登录、小程序、OSS 对象存储、移动 App 抓包/反编译、支付回调、隐私合规、AI Prompt 注入,都在同一套 Skill 里。
输入:
Use $security-skill to review examples/vulnerable-snippets.md. Focus on SQL injection, XSS, JWT leakage, payment tampering, upload risks, and privacy-safe logging.
输出会变成这种上线结论,而不是泛泛提醒:
结论: 阻止上线
仍有风险:
- [Critical] SQL/API: orders 查询拼接 req.params.id,存在 SQL 注入风险,并且没有按当前用户或租户限制订单归属。
- [Critical] JWT: 使用 jwt.decode 读取 bearer token,没有验证签名、issuer、audience、过期时间。
- [Critical] Payment: userId、amount、membershipDuration 都来自客户端,用户可篡改支付金额和会员权益。
建议测试:
- 使用用户 A 的 token 访问用户 B 的订单,应返回 403。
- 篡改 amount 和 membershipDuration 创建订单,应被服务端价格表覆盖。
是否阻止上线: 是。
完整样例见 examples/security-review-sample.md。
可视化 Demo:打开 assets/demo/security-report-demo.html,可以看到由扫描脚本生成的阻止上线报告。
本地安装到 Codex 可发现目录:
mkdir -p ~/.codex/skills
cp -R security-skill ~/.codex/skills/security-skill装完对 Agent 说:
Use $security-skill to review this code for security, privacy, and app hardening risks before shipping.
如果你把它发布到 GitHub 仓库,可以使用 Agent Skills 生态常见安装方式:
npx skills add <owner>/<repo>使用 $security-skill 帮我审查这个接口的安全和隐私风险。用 Security skill 检查这次改动,重点看越权、JWT、API Key 泄露和隐私日志。使用 $security-skill 帮我实现文件上传接口,必须防止上传漏洞、OSS 泄露和隐私数据泄露。使用 $security-skill 做上线前审查,判断是否阻止上线。Use $security-skill to review this payment callback before release.Use $security-skill to harden this mobile app against packet capture and reverse engineering.Use $security-skill to review this AI agent for prompt injection and data exfiltration risks.
| 场景 | 交付物 | 上线门禁 |
|---|---|---|
| Web/API | SQL 注入、XSS、CSRF、限流、输入输出校验审查 | 高危未修复则阻止上线 |
| Auth/JWT/权限 | 登录、Session、JWT、租户和对象级授权检查 | 越权或 token 泄露阻止上线 |
| 密钥与隐私 | API Key、日志脱敏、PII 最小化、第三方 SDK 数据采集检查 | 密钥或敏感个人数据泄露阻止上线 |
| 上传/OSS | 文件类型、大小、路径、签名 URL、Bucket 权限检查 | 私有文件公开或可写阻止上线 |
| 支付/微信登录 | 金额篡改、回调签名、openid/unionid 绑定、session_key 保护 | 支付和身份链路未验证阻止上线 |
| 移动端 | 抓包、反编译、硬编码密钥、Debug 日志、本地 token 存储检查 | 客户端承载真实安全决策阻止上线 |
| AI Agent | Prompt 注入、RAG ACL、工具调用确认、数据外泄检查 | 高影响工具可被不可信内容触发则阻止上线 |
| 维度 | 常见安全 Checklist | Security skill |
|---|---|---|
| 面向对象 | 偏 Web 通用漏洞 | 覆盖 Web、移动端、微信登录、OSS、支付、AI Agent、隐私 |
| 输出方式 | 提醒式建议 | 发布结论:通过 / 有条件通过 / 阻止上线 |
| 中文业务适配 | 较少覆盖小程序、openid、OSS、隐私日志 | 把微信和国内常见对象存储/移动端问题放进主路径 |
| 可验证性 | 只有文档 | 带漏洞样例、测试 prompt、扫描脚本和整包验证脚本 |
| AI 使用方式 | 人读清单 | 让 Agent 在写代码前后主动读取对应 reference |
security-skill/
├── SKILL.md # Agent 触发入口和核心工作流
├── README.md / README.en.md # 中英文发布说明
├── USAGE.zh-en.md # 中英文使用说明
├── references/ # 按风险域拆分的安全规则
├── scripts/
│ ├── scan_secrets.sh # 明显密钥扫描
│ ├── scan_dangerous_patterns.sh # 高风险代码模式扫描
│ ├── security_report.sh # 生成 Markdown 安全报告
│ └── validate_security_skill.sh # 整包发布前验证
├── examples/
│ ├── vulnerable-snippets.md # 故意带漏洞的测试样例
│ ├── security-review-sample.md # 期望审查输出
│ ├── security-report-demo.md # 脚本生成的真实 Demo 报告
│ └── test-prompts.json # 前向测试 prompts
├── assets/demo/
│ └── security-report-demo.html # 可传播的可视化 Demo
└── agents/openai.yaml # Codex UI 元数据
运行整包验证:
./scripts/validate_security_skill.sh单独扫明显密钥:
./scripts/scan_secrets.sh .单独扫高风险代码模式:
./scripts/scan_dangerous_patterns.sh examples/vulnerable-snippets.md生成 Markdown 安全报告:
./scripts/security_report.sh examples/vulnerable-snippets.md examples/security-report-demo.md前向测试 prompts 在 examples/test-prompts.json。一个合格的 Agent 输出必须能指出具体文件/模块风险、严重度、修复方向、建议测试,以及是否阻止上线。
这个 Skill 不会保证代码绝对安全,不会替代专业渗透测试、合规审计或支付/隐私法务评审。
它应该在这些情况下停下来要求人工确认:
- 真实支付、退款、会员权益或资金结算逻辑无法验证。
- 生产密钥、JWT signing secret、WeChat secret、OSS access key 可能已经泄露。
- 涉及身份证、地址、金融、健康、未成年人等敏感个人信息。
- 需要发布、打 tag、注册 marketplace、修改生产权限或开放对象存储 Bucket。
- 安全结论依赖第三方控制台配置,但当前无法读取配置证据。
这个 Skill 的设计参考了公开安全技能和 AI 安全生态的方向,包括:
- Trail of Bits Skills Marketplace
- Addy Osmani agent-skills security-and-hardening
- Anthropic Claude Code Security Reviewer
- ByteHide Agent Skills
- OWASP Top 10
- OWASP Top 10 for LLM Applications
Copyright (c) 2026 AiyaFun
先过安全闸门,再让 AI 动手写代码。