有哪些工具可以用于Python的安全编码?
·
一、静态代码安全扫描(SAST)—— 找代码漏洞
1. Bandit(Python 官方推荐、最主流)
专门给 Python 做的静态安全扫描工具,能直接查出:
- SQL 注入
- 命令注入
- 硬编码密钥
- 不安全反序列化
- 危险函数(eval /exec/pickle)
安装 + 使用
bash
运行
pip install bandit
bandit -r your_project/ # 递归扫描整个项目
2. Semgrep(轻量、规则强大)
跨语言安全扫描,Python 规则非常全,能查出:
- 权限问题
- 加密错误
- XSS、路径遍历
- 不安全的配置
使用
bash
运行
pip install semgrep
semgrep scan --lang=py
3. Pycharm / VSCode 安全插件
- Safety SCA
- Snyk Security
- SonarLint写代码时实时提示安全问题,非常适合开发阶段。
二、依赖安全扫描(SCA)—— 查第三方库漏洞
1. Safety(Python 最常用)
检查 requirements.txt 里的库有没有 CVE 漏洞。
bash
运行
pip install safety
safety check
2. pip-audit(Python 官方推荐)
bash
运行
pip install pip-audit
pip-audit
3. Snyk(企业级、支持 CI/CD)
能查代码 + 依赖 + 容器 + IaC,非常强。
三、输入校验 & 数据安全(防注入、越权)
1. Pydantic(Python Web 必备)
自动校验:
- 字段类型
- 长度
- 格式(邮箱、手机号)
- 范围从根源防注入、XSS、越权。
python
运行
from pydantic import BaseModel, EmailStr
class User(BaseModel):
email: EmailStr
age: int = Field(ge=18, le=100)
2. Cerberus / Marshmallow
轻量数据校验工具。
四、密码 / 加密安全工具
1. bcrypt(安全密码哈希)
绝对不要用 MD5/SHA1,必须用 bcrypt / Argon2。
python
运行
import bcrypt
pwd = b"123456"
hashed = bcrypt.hashpw(pwd, bcrypt.gensalt())
2. cryptography
官方推荐加密库,用于:
- AES 加密
- RSA 非对称加密
- JWT 签名
3. python-jose / PyJWT
安全 JWT 工具。
五、密钥 / 敏感信息检测(防止硬编码密码)
1. detect-secrets
扫描代码里的密码、密钥、Token。
bash
运行
pip install detect-secrets
detect-secrets scan > .secrets.baseline
2. gitleaks
扫描 Git 历史是否泄露密钥。
3. truffleHog
搜索 Git 中的敏感信息。
六、Web 安全专用工具
1. OWASP ZAP / Burp Suite
Web 漏洞扫描:
- SQLi
- XSS
- CSRF
- 越权
- 文件上传漏洞
2. tldr: Safe URL / SSRF Protect
防 SSRF 内网探测工具。
七、运行时安全(RASP)
1. PyRASP
Python 运行时防护,拦截:
- 命令注入
- SQL 注入
- 路径遍历
- 反序列化攻击
2. ModSecurity + WAF
拦截攻击流量。
八、CI/CD 集成(自动化安全门禁)
你可以在 Jenkins/GitLab/GitHub Actions 里集成:
- bandit
- safety
- semgrep
- snyk
- gitleaks
代码不合规直接不让合并。
九、我给你整理一个最简必备工具包(企业标准)
如果你只想用最少工具达到最强安全效果,就用这 5 个:
- Bandit → 代码漏洞
- Safety → 依赖漏洞
- Pydantic → 输入校验
- bcrypt/cryptography → 加密安全
- detect-secrets → 密钥泄露检查
总结
- 静态扫描:Bandit、Semgrep
- 依赖安全:Safety、pip-audit
- 输入安全:Pydantic
- 加密安全:bcrypt、cryptography
- 密钥泄露:detect-secrets、gitleaks
- Web 安全:ZAP、Burp Suite
更多推荐


所有评论(0)