AgentSkillsCN

analyzing-routes

分析 Web 项目的鉴权架构与 API 路由端点,生成 PreAuth/PostAuth 安全分类报告

SKILL.md
--- frontmatter
name: analyzing-routes
description: 分析 Web 项目的鉴权架构和 API 路由端点,生成 PreAuth/PostAuth 安全分类报告
argument-hint: [project-path]
allowed-tools:
  - Read
  - Grep
  - Glob
  - Task
  - Write

鉴权与路由端点分析

分析目标$ARGUMENTS

分析指定项目的完整鉴权体系和所有路由端点,识别鉴权边界,对路由进行安全分类。

何时使用

  • 渗透测试侦察:测试前需要完整的攻击面清单,识别所有 PreAuth 入口点
  • 代码审计启动:审计初期建立鉴权全景图,确定审计范围和优先级
  • 权限体系梳理:接手陌生项目,快速理解其鉴权架构和访问控制模型
  • 未授权漏洞挖掘:系统性识别可能存在未授权访问的接口
  • 生成攻击面报告:输出完整的路由与权限对照清单

典型输入:Web 项目根目录(Java / Python / Node.js / Go / PHP 等)

何时不使用

  • 分析单个接口:只需查看某个具体路由的鉴权逻辑,直接阅读相关代码即可
  • 非标准框架:项目使用完全自研路由系统,无标准路由定义模式
  • 需要修复建议:此 skill 仅输出客观分析结果,不提供任何安全修复方案
  • 前端路由分析:此 skill 针对后端 API 路由,前端路由需使用其他工具
  • 微服务网关层:此 skill 分析单体应用内部鉴权,API Gateway 层鉴权需单独分析

执行规则

必须严格遵守以下规则,违反将导致分析结果不完整或无效

输出约束

规则说明
禁止修复建议报告不含任何安全建议或修复方案
完整路径必须输出 /api/v1/users/{id},禁止相对路径
禁止省略禁止"等"、"其他类似接口"等省略表述
逐个处理搜索到 N 条结果,报告必须有 N 条记录

常见错误(必须避免)

错误思维正确做法
"找到一个鉴权框架就够了"每层都搜索,可能多种机制并存
"找到主框架就不找中间件了"继续搜索所有 Filter/Middleware/Interceptor
白名单 /** 只记一条必须展开搜索所有具体路由
在白名单就是无认证检查处理函数内部是否有旁路认证
只按文件名搜索必须基于代码内容搜索(Grep)
混淆代码难以分析注解/装饰器通常是明文,用 Grep 搜索
第三方模块不用分析在第三方模块目录中同样搜索路由
"搜到13个中间件只分析1个"每个都必须分析,不做假设性跳过
搜索结果太多只看前几行必须完整阅读所有搜索结果
凭直觉归类路由必须读取代码确认,不能猜测
"这个模块看起来不重要"广度优先,先扫描再深入

分析流程概览

本技能分为两个阶段执行:

第一阶段:鉴权机制分析

识别项目的所有鉴权层(框架层、中间件层、注解/装饰器层、代码层),建立完整的鉴权边界。

详细步骤请参见 本 skill 目录下的 workflows/phase1-auth-analysis.md

第二阶段:路由端点分析

基于第一阶段的鉴权边界,分析所有路由端点并进行安全分类。

详细步骤请参见 本 skill 目录下的 workflows/phase2-route-analysis.md

路由分类

分类说明
PreAuth - 完全无认证白名单且无旁路认证
PreAuth - 旁路认证白名单但有自己的认证机制
PostAuth - 高权限需认证且需高权限角色
PostAuth - 普通权限需认证无特定角色要求

语言参考文档

根据识别的语言选择对应的参考文档(位于本 skill 目录下的 references/ 文件夹):

语言常见鉴权框架参考文档
JavaSpring Security, Shiro, JWTreferences/java.md
PythonDjango Auth, Flask-Login, FastAPI Securityreferences/python.md
Node.jsPassport.js, Express-jwt, NestJS Guardsreferences/nodejs.md
GoGin middleware, Echo middleware, Casbinreferences/go.md
PHPLaravel Auth, Symfony Securityreferences/php.md

注意:如果参考文档不存在,根据框架特征自行搜索鉴权组件和路由定义。


输出规范

报告格式

按照 references/report-template.md 模板生成报告。

输出方式

分析完成后,报告需要同时

  1. 保存到文件$ARGUMENTS/route-analysis-report.md
  2. 返回到对话:完整报告作为最终响应返回

注意:使用 context: fork 隔离执行,报告内容会作为子代理输出返回到主对话。确保报告完整,不省略任何路由。