关于 application-security
application-security 是面向编写和审查应用代码的安全 Skill,适用于处理不可信输入、机密信息、外部请求、渲染内容或第三方依赖的开发者。它按 OWASP Top 10:2025 组织规则,并提供构建与审查两种模式。
主要功能
- 01覆盖机密信息与环境变量处理
- 02指导输入验证和输出编码
- 03检查 SSRF 与外部请求风险
- 04审查访问控制和数据暴露
- 05评估依赖及软件供应链风险
适用场景
- 01编写安全处理用户输入的请求逻辑
- 02审查变更中的凭证泄露与访问控制问题
- 03检查新增外部请求或依赖的安全性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ axross/ skills --skill application-security安装后在 Claude Code 中输入/application-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/injection-and-output-encoding.mdinput-validation.mdprivacy-and-exposure.mdsecret-handling.mdssrf-and-embeds.mdsupply-chain.md详细介绍
应用安全
在编写或审查处理不可信输入、机密信息、出站请求、渲染内容或第三方依赖项的代码时,请使用此能力。它会以两种模式应用同一套规则:
- 构建 — 默认安全地编写代码。优先选择从结构上就安全的实现方式(在边界处解析、在输出端编码、对主机名使用允许列表),而不是选择之后还必须记得添加防护的实现方式。
- 审查 — 检查变更引入的风险,并标注其严重程度,以便在合并前修复。审查规则为每项风险标注严重程度(Critical / Major / Minor);如果宿主项目定义了自己的审查严重程度词汇,请与之保持一致。
本文以 OWASP Top 10:2025 为框架。以下每个参考文档都会针对一种风险涵盖这两种模式。这些参考文档基于常见的 Web 应用结构编写:框架具有公开或暴露给客户端的环境变量前缀、内容渲染器、图像优化器和元数据路由。若你的项目结构不同,请将相同规则应用于项目中对应的界面,而不是跳过规则;若规则依赖其他实践(依赖项合理性说明、审查范围),文中会指出相关实践,因此此能力可独立使用。
本文中的关键词 “MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY” 和 “OPTIONAL” 的含义,遵循 RFC 2119 中的定义。
OWASP Top 10:2025 覆盖范围
2025 年的两项类别调整会影响风险归类:SSRF 不再是独立类别,而是归入 A01 访问控制失效;易受攻击或过时的组件则扩展为新的 A03 软件供应链失效。
| 风险主题 | 主要 OWASP Top 10:2025 类别 | 参考文档 |
|---|---|---|
| 机密信息与环境变量 | A04 加密失效,A02 安全配置错误 | secret-handling |
| 输入验证 | A05 注入 | input-validation |
| 注入与输出编码 | A05 注入 | injection-and-output-encoding |
| SSRF 与出站获取 | A01 访问控制失效 | ssrf-and-embeds |
| 访问控制与数据暴露 | A01 访问控制失效,A02 安全配置错误 | privacy-and-exposure |
| 供应链 | A03 软件供应链失效 | supply-chain |
机密信息与环境变量处理
请参阅 secret-handling.md,了解如何:
- 编写代码,通过单一环境变量边界读取机密信息,并避免将其写入日志、遥测数据或客户端包
- 审查差异,查找已提交的凭据、白名单之外的
process.env访问,或通过客户端前缀环境变量暴露的机密信息 - 确保示例环境变量文件和
.env.example文档真实准确,不包含实际值
输入验证
请参阅 input-validation.md,了解如何:
- 在边界处解析并转换每项请求输入,再将其传递至数据层、出站
fetch或渲染管线 - 无论静态类型如何,都将路由参数、查询参数、请求体和存储的记录视为不可信数据
- 检查处理程序、服务端操作、数据访问函数或文件上传逻辑是否缺少运行时检查
注入和输出编码
请参阅 injection-and-output-encoding.md,了解如何:
- 根据输出上下文对不可信内容进行编码,并且仅通过框架的安全输出接口渲染
- 在格式允许时,将 URL 协议加入允许列表,并清理富文本 HTML
- 检查渲染组件、自定义节点或处理管线变更是否使用了原始 HTML 输出接口,或绕过了编码路径
SSRF 和出站请求
请参阅 ssrf-and-embeds.md,了解如何:
- 安全地获取由用户或 CMS 控制的 URL:优先使用允许列表而非拒绝列表,针对保留地址范围进行解析和验证,处理重定向和 DNS 重绑定,并设置严格的超时
- 查看出站请求分诊图和保留地址范围/云元数据参考表
- 检查新增的请求调用方、图片主机条目、元数据路由或变更端点是否存在 SSRF 或 CSRF 漏洞
访问控制和数据暴露
请参阅 privacy-and-exposure.md,了解如何:
- 在公共界面默认仅提供最少数据,并通过显式检查控制对未发布内容、预览内容和管理内容的访问
- 避免在公共响应、元数据和分析数据中暴露内部标识符、存储键和源自环境变量的值
- 检查差异,确认公共路由、元数据生成器或受 localhost 限制的路径是否泄露了非公开数据
供应链
请参阅 supply-chain.md,了解如何:
- 审慎引入依赖:确保依赖有充分理由、维护活跃、跨平台、锁文件固定,并且安装时不运行未经审查的生命周期脚本
- 选择可信发布者的版本标签或不可变的 CI 操作 SHA,同时分别评估作业凭据、可写输出和下游获取
- 优先使用标准库或平台 API,而非新增轻量依赖
- 检查清单或锁文件变更是否引入了缺乏正当理由、过于庞大或存在风险的依赖