用途
aif-security-checklist 是一个安全审计清单技能,依据 OWASP Top 10(2021)与行业最佳实践,帮助团队对代码库和项目进行系统化的安全检查。它适用于在开发、评审或部署前识别常见安全风险,并给出可执行的检查项。
主要能力
技能覆盖以下安全领域:
- 认证与会话:密码安全(最小长度、bcrypt/argon2 哈希、成本因子、不记录明文、泄露检测)、会话管理(登录后重新生成会话 ID、空闲与绝对超时、安全 Cookie 标志、登出失效、并发会话限制)、JWT 安全(RS256/ES256、短过期时间、校验全部声明、刷新令牌安全存储、令牌吊销、不在载荷中存放敏感数据)。
- 注入防护:SQL 注入(参数化查询、ORM)、NoSQL 注入(类型校验)、命令注入(使用 execFile 而非字符串拼接)。
- XSS:默认 HTML 编码输出、配置 Content-Security-Policy、X-Content-Type-Options: nosniff、富文本净化、渲染链接前校验 URL。
- CSRF:状态变更请求使用 CSRF 令牌、Cookie 设置 SameSite=Strict 或 Lax、校验 Origin/Referer、不用 GET 做状态变更。
- 密钥管理:密钥存放于环境变量或 vault、.env 加入 .gitignore、各环境使用不同密钥、定期轮换、审计访问、客户端代码不含密钥;并提供从 Git 历史清除密钥的命令示例。
- API 安全:API 密钥不放 URL、按用户/IP 限流、敏感操作请求签名、第三方访问使用 OAuth 2.0;客户端日志与错误处理(生产环境禁用调试日志、UI 不暴露原始错误、使用稳定错误码如 VALIDATION_FAILED、UNAUTHORIZED 等);输入校验(如使用 zod schema);响应安全(不暴露内部错误与敏感字段)。
- 基础设施安全:安全响应头(helmet 或手动设置 X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security、Referrer-Policy、Permissions-Policy 等)、依赖漏洞扫描。
- LLM 提示注入与竞态条件/TOCTOU 检查。
使用方式
技能提供以下命令形式:
/aif-security-checklist— 完整审计清单/aif-security-checklist auth— 认证与会话/aif-security-checklist injection— SQL/NoSQL/命令注入/aif-security-checklist xss— 跨站脚本/aif-security-checklist csrf— 跨站请求伪造/aif-security-checklist secrets— 密钥与凭据/aif-security-checklist api— API 安全/aif-security-checklist infra— 基础设施安全/aif-security-checklist prompt-injection— LLM 提示注入/aif-security-checklist race-condition— 竞态条件与 TOCTOU/aif-security-checklist ignore <item>— 忽略特定检查项
配置方面,技能首先读取 .ai-factory/config.yaml(若存在)以解析 paths.security、language.ui、language.artifacts、language.technical_terms。若不存在则使用默认值:SECURITY.md 路径为 .ai-factory/SECURITY.md,ui_language 为 en,artifact_language 为 en,technical_terms_policy 为 keep。所有面向用户的提示、审计摘要与下一步指引使用 ui_language;持久化的 SECURITY.md 忽略项工件使用 artifact_language。
忽略项机制:运行 ignore 子命令时,读取当前 SECURITY.md(不存在则创建),询问忽略原因,按格式添加条目并确认。运行审计时先读取 SECURITY.md,匹配当前范围的忽略项不作为发现项,而是在末尾“⏭️ Ignored Items”区域展示其原因与日期。忽略项使用短 kebab-case ID,如 no-csrf、no-rate-limit、no-https、no-xss-csp、no-sql-injection、no-prompt-injection、no-race-condition、no-secret-rotation、no-auth-{route}、verbose-errors 或自定义描述性 ID。
项目上下文:若存在 .ai-factory/skill-context/aif-security-checklist/SKILL.md,则必须读取。该文件包含由 /aif-evolve 从补丁、代码库约定与技术栈分析中积累的项目特定规则,作为本技能通用指令的项目级覆盖;冲突时项目规则优先,无冲突时两者同时适用。技能上下文规则适用于本技能的所有输出,包括安全清单、部署前清单与 SECURITY.md。
自动化审计:可运行 bash ~/{{skills_dir}}/security-checklist/scripts/audit.sh,检查代码中的硬编码密钥、.env 是否被 git 跟踪、.gitignore 配置、npm audit 漏洞、生产代码中的 console.log、安全任务标记。
机器可读门禁结果:完整审计或类别审计时,先输出人类可读报告,再附加一个 aif-gate-result JSON 块。状态映射:fail 表示存在未忽略的严重/高危问题或其他明确阻塞生产的问题;warn 表示仅剩中/低危发现、需复查的忽略项、审计证据不完整或审计命令限制;pass 表示审计完成且无未忽略发现。JSON 字段使用 "gate": "security"、"status": "pass|warn|fail"、"blocking": true|false,blockers 仅含阻塞生产的问题,affected_files 列出涉及路径,suggested_next 指向 /aif-fix 或 null。JSON 块中不得包含密钥、令牌、原始密码或私有凭据。
适用场景
适用于需要在开发流程中引入安全检查的团队,例如在代码评审、发布前检查、合规审计准备或安全加固阶段使用。可按类别聚焦审计,也可运行完整清单。
限制
资料未提供该技能的收费、价格、平台支持范围或具体效果数据。技能依赖项目配置文件与 skill-context 文件,若缺失则使用默认值。自动化审计脚本的具体覆盖范围以资料所述为准,未提及的检查项暂未提供。