UmiCoder29/Sentinal-ai

GitHub: UmiCoder29/Sentinal-ai

一款基于 AST 的离线静态分析工具,专门用于检测 Python 代码中的 SQL 注入漏洞并提供修复建议。

Stars: 0 | Forks: 0

# Sentinel SQL 扫描器 Sentinel 是一个学习项目且正在开发中。它尚未达到生产就绪状态,不应作为您唯一的安全工具。 Sentinel 是一款轻量级的离线静态分析工具,旨在查找 Python 代码库中潜在的 SQL 注入漏洞。它使用抽象语法树(AST)来识别用户输入可能被直接拼接到 SQL 查询中的不安全模式。 ## 功能 - **静态代码分析**:无需执行代码即可扫描 `.py` 文件。 - **深度模式匹配**:检测 SQL 查询中不安全的 f-string、`.format()` 调用、`%` 格式化以及字符串拼接。 - **严重性分级**:根据风险级别将发现分为严重、高、中或低。 - **详细报告**:提供包含文件位置、代码片段和修复建议的控制台摘要。 - **智能 CLI**:自动处理包含空格的文件路径。 ## 安装说明 请确保您已安装 Python 以及所需的依赖项: ``` pip install rich ``` ## 如何使用 从项目根目录运行扫描器。 ### 基本用法 扫描当前目录: ``` python -m sql_scanner ``` ### 扫描特定文件夹 指定相对或绝对路径: ``` python -m sql_scanner C:\path\to\your\python_project ``` ### 处理包含空格的文件夹 扫描器会自动拼接参数,因此对于包含空格的路径,您无需使用引号(尽管使用引号依然有效): ``` python -m sql_scanner My Project Folder # 或 python -m sql_scanner "C:\Users\Name\My Project" ``` ## 检测内容 Sentinel 会寻找您数据库代码中常见的“危险信号”: 1. **直接拼接**:`cursor.execute("SELECT * FROM users WHERE name = '" + user_input + "'")` 2. **查询中的 f-string**:`cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")` 3. **不安全的格式化**:在 SQL 语句中使用了 `query.format(val)` 或 `query % val`。 4. **注入特征**:常见的攻击模式,如 `OR '1'='1'`、`UNION SELECT` 和 `SLEEP()`。 ## 输出 该工具会在您的终端中提供一个结构化表格,显示: - **严重性**:发现结果的危险程度。 - **位置**:确切的文件名和行号。 - **原因**:被标记的原因(例如,“在 SQL 查询中使用了不安全的 f-string”)。 - **修复建议**:关于如何修复漏洞的可操作建议(例如,“使用参数化查询”)。 *保持安全。部署前先扫描。*
标签:CISA项目, DevSecOps, DOE合作, Python代码扫描, Python安全工具, SAST, SQL注入检测, SQL注入防御, 上游代理, 代码安全, 加密, 威胁情报, 安全专业人员, 安全测试, 开发者工具, 开源安全工具, 攻击性安全, 模式匹配, 漏洞修复建议, 漏洞扫描器, 漏洞枚举, 盲注攻击, 离线扫描, 网络安全, 自动化payload嵌入, 自动化资产收集, 逆向工具, 逆向工程平台, 错误基检测, 隐私保护, 静态代码分析