大家好,我是程序员晚枫。
Python 写的应用被黑了?
99% 是你没做好安全防护。
今天讲透 5 大类常见漏洞。
一、为什么 Python 应用会被黑?
5 大常见漏洞:
- SQL 注入
- XSS
- CSRF
- 命令注入
- 文件上传漏洞
每一个都"低级但致命"。
二、漏洞 1:SQL 注入(最常见)
危险代码
1 | # 危险 |
攻击者输入:
1 | username = "admin' OR '1'='1" |
生成的 SQL:
1 | SELECT * FROM users WHERE name = 'admin' OR '1'='1' AND password = 'anything' |
结果:绕过密码验证!
安全代码
1 | # 安全 |
用参数化查询,100% 防 SQL 注入。
真实案例
- 某电商平台:被 SQL 注入,泄露 100 万用户
- 某政府网站:被攻击,数据被篡改
- SQL 注入是 OWASP Top 10 第一名
三、漏洞 2:XSS(跨站脚本)
危险代码
1 | # 危险 |
攻击者输入:
1 | ?q=<script>alert(document.cookie)</script> |
结果:用户的 cookie 被窃取!
安全代码
1 | # 安全 |
或者用模板自动转义:
1 | <!-- Jinja2 自动转义 --> |
真实案例
- 微博 XSS:蠕虫传播
- 论坛 XSS:管理员账号被盗
- XSS 是 OWASP Top 10 第 3 名
四、漏洞 3:CSRF(跨站请求伪造)
攻击原理
用户登录了银行 A,同时访问了恶意网站 B。
B 网站向银行 A 发送转账请求,因为用户已登录,银行执行。
防护 1:CSRF Token
1 | # Django 自带 CSRF 防护 |
防护 2:SameSite Cookie
1 | # Flask |
防护 3:检查 Referer
1 | def transfer(request): |
真实案例
- GitHub 曾经有 CSRF 漏洞:用户仓库被自动创建
- NYT 曾经被攻击:用户被自动点赞**
五、漏洞 4:命令注入
危险代码
1 | # 危险 |
攻击者输入:
1 | host = "8.8.8.8; rm -rf /" |
结果:删除整个服务器!
安全代码
1 | # 安全 |
关键:
- 不要用 shell=True
- 验证输入
- 用列表参数
真实案例
- 某云服务:被命令注入,服务器被攻击
- 命令注入是 OWASP Top 10 重要项
六、漏洞 5:文件上传漏洞
危险代码
1 | # 危险 |
攻击者上传:
shell.php(Web shell)image.jpg.php(伪装图片的 PHP)../../../etc/passwd(路径穿越)
安全代码
1 | # 安全 |
真实案例
- 某论坛:被上传 Web shell
- 很多 CMS:被上传木马
- 文件上传是 Web 漏洞第一名
七、5 大其他常见漏洞
漏洞 6:密码明文存储
错误:
1 | # 危险 |
正确:
1 | import bcrypt |
漏洞 7:硬编码密钥
错误:
1 | # 危险 |
正确:
1 | import os |
漏洞 8:日志泄露敏感信息
错误:
1 | logger.info(f"User {username} logged in with password {password}") |
正确:
1 | logger.info(f"User {username} logged in") |
漏洞 9:反序列化漏洞
危险:
1 | # 危险 |
正确:
1 | # 用 JSON 代替 pickle |
漏洞 10:依赖库漏洞
风险:
- requests 旧版本有漏洞
- numpy 旧版本有问题
防护:
1 | # 用 safety 检查 |
八、5 大安全工具
工具 1:bandit(代码扫描)
1 | pip install bandit |
工具 2:safety(依赖检查)
1 | pip install safety |
工具 3:pip-audit(依赖审计)
1 | pip install pip-audit |
工具 4:OWASP ZAP(Web 扫描)
- 专业的 Web 漏洞扫描器
- 企业级
工具 5:Snyk(持续监控)
- GitHub 集成
- PR 自动检查
九、5 大安全最佳实践
实践 1:参数化查询
1 | # ✅ 永远 |
实践 2:转义输出
1 | # ✅ 永远 |
实践 3:环境变量存密钥
1 | # ✅ 永远 |
实践 4:HTTPS
1 | # ✅ 永远 |
实践 5:定期更新依赖
1 | # 每月 |
十、5 个真实安全漏洞案例
案例 1:Equifax 数据泄露
- 漏洞:Apache Struts 漏洞
- 损失:1.43 亿用户数据
- 原因:未及时更新依赖
案例 2:Yahoo 30 亿账号泄露
- 漏洞:弱加密 + 内部威胁
- 损失:30 亿账号
- 原因:密码哈希弱
案例 3:WannaCry 勒索病毒
- 漏洞:Windows SMB 漏洞
- 损失:100 亿美元
- 原因:未打补丁
案例 4:Capital One 数据泄露
- 漏洞:SSRF + 错误配置
- 损失:1 亿用户
- 原因:WAF 配置错误
案例 5:Facebook 数据泄露
- 漏洞:API 权限问题
- 损失:8700 万用户
- 原因:API 设计缺陷
十一、给 Python 安全编程学习者的 4 个建议
建议 1:OWASP Top 10
- 必读
- 每 1-2 年更新
- https://owasp.org/
建议 2:用 bandit 扫代码
- 每次提交
- CI 必备
建议 3:定期更新依赖
- 每月
- 自动化
建议 4:HTTPS 强制
- 全站
- HSTS、CSP
十二、最后的最后
Python 安全编程,3 句话总结:
- 5 大漏洞必防:SQL 注入、XSS、CSRF、命令注入、文件上传
- 参数化查询 + 转义 + Token:3 大防护
- bandit + safety + 定期更新:3 大工具
学 Python 6 年,我学到的最重要的事:
"安全不是功能,是责任。"
每一个漏洞,都可能让公司损失百万。
OWASP Top 10 + bandit + safety = 任何 Python 项目的"安全金标准"。
从今天开始,每个项目都做安全检查。
相关阅读
- 2026 年学习编程,你需要的不是更多教程
- 我用AI做PPT,同事说你是PPT设计师吗
- 设计师花3天做的图,我用 AI 15分钟搞定了
- Codex 入门指南,从零基础到实战,看这一篇就够了!
- HR看简历只花6秒,我用AI让我的简历过了第一关
- 我用AI做数字人播报,老板问"你什么时候请的主播?"
科技不高冷,AI很好用。
我是晚枫,关注我,带你一起玩AI!
🎓 AI 编程实战课程
程序员晚枫专注AI编程培训,通过 《50讲 · AI编程训练营》,让小白也能用AI做出实际项目。帮你从零上手!
- 👉 免费试看:网盘链接,免费试看前3讲,先看看适不适合自己
- 👉 - 👉 课程报名:点击这里报名,现在报名还送书📖
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 程序员晚枫 - Python自动化办公与AI编程!
