mcpField
A
application-security

application-security

github.com/axross安全143 次安装1 天前更新
代码仓库

关于 application-security

application-security 是面向编写和审查应用代码的安全 Skill,适用于处理不可信输入、机密信息、外部请求、渲染内容或第三方依赖的开发者。它按 OWASP Top 10:2025 组织规则,并提供构建与审查两种模式。

主要功能

  1. 01覆盖机密信息与环境变量处理
  2. 02指导输入验证和输出编码
  3. 03检查 SSRF 与外部请求风险
  4. 04审查访问控制和数据暴露
  5. 05评估依赖及软件供应链风险

适用场景

  1. 01编写安全处理用户输入的请求逻辑
  2. 02审查变更中的凭证泄露与访问控制问题
  3. 03检查新增外部请求或依赖的安全性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/axross/skills --skill application-security

安装后在 Claude Code 中输入/application-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
injection-and-output-encoding.md
input-validation.md
privacy-and-exposure.md
secret-handling.md
ssrf-and-embeds.md
supply-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,而非新增轻量依赖
  • 检查清单或锁文件变更是否引入了缺乏正当理由、过于庞大或存在风险的依赖

评论

支持 Markdown