SuperAPI AI 工具集

py-security

安全与审计

查看项目

更新于 10-15 23:48

技能介绍

用途:在 Python 代码库中发现并修复安全漏洞,遵循 Engineering Charter 安全原则。

主要能力:使用自动化扫描器检测漏洞;识别 SQL 注入风险;发现硬编码密钥与凭据;检测弱加密实践;按安全编码模式修复;防止密钥被提交到 git。

所需工具:在 [dependency-groups] dev 中加入 "bandit"、"ruff"。bandit 是基于 AST 的安全扫描器;ruff --select S 为内置 Bandit 规则(更快的替代方案)。权限方面需先运行 py-quality-setup 配置 .claude/settings.local.json 的工具权限。

使用方式:运行扫描器,如 bandit -r . -f json -o bandit_report.json、bandit -r . -ll(仅显示中/高危),或 ruff check . --select S、ruff check . --select S --output-format=json > security_report.json。常见漏洞类别包括高危的 S608 SQL 注入、S105/S106/S107 硬编码密码密钥、S501/S506 弱 SSL/TLS、S324 不安全哈希、S602-S607 Shell 注入;中危的 S311 不安全随机数、S301-S303 不安全反序列化、S701/S702 Jinja2 自动转义;低危的 S101 assert、S104 绑定 0.0.0.0。

修复模式:SQL 使用参数化查询(%s 占位符),动态表/列名需先校验白名单并用 psycopg2.sql 的 Identifier;密钥改用环境变量(os.environ、os.getenv)或 python-dotenv 加载 .env,并将 .env 加入 .gitignore;安全敏感随机数改用 secrets 模块;密码哈希改用 argon2 或 bcrypt,数据完整性用 SHA256 或 blake2b;Shell 命令改用 subprocess 列表参数且不用 shell=True,或直接用 Python 库。

验证清单:ruff check . --select S 无安全问题;bandit -r . -ll 无中/高危;代码库无硬编码密钥;密钥来自环境变量或 .env;.env 在 .gitignore 中;所有 SQL 使用参数化查询;修复后测试全部通过。

相关技能:前置 py-quality-setup,强制 py-git-hooks,另见 py-code-health。限制:资料未提供具体收费、平台支持范围与效果保证等信息。