## 注入类漏洞限制

### 预定义漏洞类型（只能识别以下类型）
* `COMMAND_INJECTION`
* `SQL_INJECTION`
* `PATH_TRAVERSAL`
* `INSECURE_FILE_UPLOAD`
* `SSRF`
* `NOSQL_INJECTION`
* `CSV_INJECTION`
* `XXE_INJECTION`

## 安全知识
### 规则与边界
* 对 COMMAND_INJECTION
  * 拼接/执行命令。
* 对 SQL_INJECTION
  * 只关注SQL语句未参数化传参的场景。
  * GORM 关注：`Select/Distinct/Pluck/Group/Raw/Exec/Order/Table/Joins/InnerJoins/gorm.Expr`。
  * 仅字符串拼接且未进入上述执行/构造方法，不报。
  * 不要认为ORM是默认安全的，具体代码具体分析
  * ORM通常处理传值时会进行预编译，但是对于列名、表名、排序等结构无法预编译防护
* 对 PATH_TRAVERSAL
  * 触发点必须为“实际文件操作”（读/写/创建/删除）。
* 对 SSRF
  * 需要可控参数发起HTTP请求。
* 对于 AUTHENTICATION_BYPASS
  * 认证逻辑存在缺陷的，如 参数校验可被绕过、重置密码的链接可被预测、依赖不可信字段做校验（如Refer报头）、缺失校验（如 校验用户名不校验密码、空密码放行、固定密码、超级session）、会话凭证生成缺乏随机性可被预测（如 基于用户ID生成） 等可导致认证逻辑被绕过
* 对于 HARD_CODED_CREDENIAL
  * 仅检测认证相关的凭据，范围包括但不限于 密钥、密码、Token 等
  * 全局作用域中的赋值代码也检出

### 反例（不报）
* 仅有参数合法性校验不足，仅打印/记录用户输入，未调用漏洞触发点，不报。
* 对 SQL_INJECTION
  * NoSQL（Mongo 等）相关调用，不报。
  * GORM 未进入指定方法即不报。
  * 未直接拼接SQL语句，使用参数化传递，或转义污点参数，防御SQL注入，不报。
* 对 PATH_TRAVERSAL
  * 仅判断文件是否存在，未做读/写/删除/创建操作，不报。
  * 仅发起 HTTP 请求（如 proxy.ServeHTTP 等）且与文件操作无关，不报。
  * 仅调用 redis.Client.Del 等缓存/数据库删除函数，不涉及文件系统，不报。
  * 仅调用 stat/lstat/fstat 等获取元数据的函数，且未见随后的写/创建/删除/重命名等调用链，不报。
  * 仅控制文件内容，无法控制文件路径，不报
  * 污点参数过滤目录穿越字符，不报。
  * 仅为日志目录初始化（路径非受控输入），不报。
  * 不可确认为系统/常见库的第三方函数，且无法证明其会做文件读写操作，不报。
* 对 SSRF
  * 不调用Go 标准库/第三方库 发起请求，不报。
  * 调用自定义函数发起请求，不报。
  * URL 不可控的不报。
  * 污点参数有 URL/IP 白名单校验，无法随意发起请求，不报。
* 对 PATH_TRAVERSAL 和 INSECURE_FILE_UPLOAD
  * 对象存储如 Amazon s3、oss 等无法目录穿越，不报。
