page contents

Python中那些容易被忽略的安全问题,今天一次性告诉你

写Python三年了,我踩过的坑比写的代码还多。今天跟你们聊聊那些容易翻车的安全问题。这些东西网上教程基本不提,但你真遇到了可能得加班到半夜。

attachments-2026-09-l9wWxewG6aa0baa78b2be.png写Python三年了,我踩过的坑比写的代码还多。今天跟你们聊聊那些容易翻车的安全问题。这些东西网上教程基本不提,但你真遇到了可能得加班到半夜。

输入验证别偷懒。很多人觉得用户输入就是个字符串,直接传给eval或者exec。这操作等于把服务器大门敞开。有人传个 __import__('os').system('rm -rf /') 进来,你代码就没了。正确的做法是老老实实用类型检查加正则过滤。别嫌麻烦,这是保命用的。

序列化反序列化那块水很深。pickle加载不可信数据就是在自找麻烦。有人把序列化好的对象存在cookie里,直接反序列化用。攻击者构造个恶意类,加载时就能执行任意代码。你要是用json或者protobuf这类安全格式,至少不会被人反手搞垮。

字符串格式化也有坑。老版本Python用%操作符格式化SQL语句,不少人直接拼字符串。有个同事当年把用户输入的邮箱直接拼进SQL查,结果被人注了三次库。他现在养成习惯,所有数据库操作只走参数化查询。记住一句话:永远别把用户输入拼到代码里

临时文件处理要小心。很多人图方便用 tempfile.mktemp() 生成临时文件名,这函数有竞态条件漏洞。攻击者能预测文件名,在创建前塞个软链接进去。你写的敏感数据就可能跑到别人目录下。用 tempfile.NamedTemporaryFile 或者 mkstemp 这些线程安全的函数才能防住。

日志里别存明文密码。见过太多人为了方便调试,把用户密码原样打进日志文件。运维查日志时密码全暴露了。就算内部网络是隔离的,保不准哪个同事电脑中木马。密码和敏感信息必须脱敏再记录。用 hashlib 做个不可逆处理,或者直接填星号。

自定义异常处理时留意信息泄露。有人写API接口直接返回异常traceback,堆栈里路径、版本号、变量值全报出来了。攻击者看一眼就知道你用的框架版本,哪个库没打补丁。正确处理方式是所有异常只返回固定提示,内部再用日志记录详情。

依赖包版本锁死很重要。requirements.txt写个 requests>=2.25 等于告诉别人随便装新版本。哪天requests新版本改了行为不兼容,你代码直接崩。更危险的是有人故意给流行包提个恶意PR,合并后你的应用自动升级就中招。用 pip freeze 生成精确版本号,别偷懒。

子进程执行命令时小心shell注入。用 subprocess.call(f'ping {host}', shell=True) 这写法,别人传个 ; cat /etc/passwd 就能读系统文件。改成传参数列表的形式,像 subprocess.call(['ping', host]) 就能安全很多。根本原因还是别让字符串进shell。

环境变量别存太敏感的东西。有人把数据库密码写在系统环境变量里,备份环境变量文件时全泄露了。或者容器镜像打包时环境变量跟着进去,别人拉镜像看层信息就破译出密码了。用Vault这类专用的密钥管理服务才是正解。

处理文件上传时限制类型和大小。有人让用户上传头像,结果传了个php脚本上去。服务器没禁用执行权限,直接被人挂马。用 mimetypes 库检测真实文件类型,别只看扩展名。同时限制文件大小防止内存溢出。

CSRF防护别图省事。写web应用时很多人只在登录接口加token就完了。跨站请求伪造攻击能利用用户已登录的session干很多事。Flask有现成的csrf保护中间件,Django默认就带。把防护全开了再上线,别等被人举报了才想起来。

HTTPS证书校验不能跳过。测试环境有人图方便关了验证,代码直接复制到生产环境。攻击者冒充服务端时你程序还傻乎乎信任。用requests库写 verify=True 并且配好CA证书包,或者直接用 certifi 这个库。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-09-09 09:47
  • 阅读 ( 30 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2420 篇文章

作家榜 »

  1. Pack 2420 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章