用途:检测源码中的 SQL 注入(CWE-89、OWASP A03:2021)易受攻击模式,核心是识别用户输入被拼接或插值进 SQL 字符串的写法。
主要能力:按阈值表分级。CRITICAL 包括 f-string 含 SQL 关键字与用户输入、字符串拼接进 SQL、cursor.execute 直接传 f-string、executemany 拼接查询;HIGH 包括 %-格式化、.format()、sequelize.query 模板字面量、Knex/sequelize raw() 插值、JDBC Statement.execute 拼接、Rails where() 字符串插值、Go db.Query 配 fmt.Sprintf;MEDIUM 包括 Django .extra() 原始 SQL。
使用方式:需 Python 3.9+ 与本地源码树。运行:python3 ${CLAUDE_PLUGIN_ROOT}/skills/detecting-sql-injection-patterns/scripts/scan_sqli.py /path/to/repo。选项:--output FILE、--format json|jsonl|markdown(默认 markdown)、--min-severity(默认 info)、--include-tests(默认排除测试目录)、--languages 逗号分隔列表(默认全部)。退出码:0 干净,1 有 high/critical,2 错误。
适用场景:合并前代码审查(可只扫描分支变更文件)、遗留代码库审计,按可达性优先处理公开端点触达的查询。修复方向为使用各语言/库的参数化查询 API,参考 references/PLAYBOOK.md。
限制:无法在没有完整 AST 与控制流分析的情况下判断变量来源,固定标识符插值可能误报,需人工核实;动态表名查询有时合法(如多租户路由),通常需白名单校验加标识符引用。资料未提供收费、价格或平台信息。