老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Python语言中的几个安全陷阱,你都知道吗?老男孩python培训班

老男孩IT教育

行业新闻

2022年3月22日 12:06

Python编程人员在日常使用三方库和框架时,往往不担心自己的代码、程序会出现问题,然而在Python语言中,有一些特性有极大可能被编程人员误用,导致代码中出现严重的安全漏洞,本期小编为大家整理了Python语言中的较为常见的几种安全陷阱,请看下文:

       Python编程人员在日常使用三方库和框架时,往往不担心自己的代码、程序会出现问题,然而在Python语言中,有一些特性有极大可能被编程人员误用,导致代码中出现严重的安全漏洞,本期小编为大家整理了Python语言中的较为常见的几种安全陷阱,请看下文:

python培训班

       01 MakeDirs权限

       os.makdirs函数可以在操作系统中创建一个或多个文件夹。它的第二个参数mode用于指定创建的文件夹的默认权限。在下面代码的第2行中,文件夹A/B/C是用rwx------ (0o700) 权限创建的。这意味着只有当前用户(所有者)拥有这些文件夹的读、写和执行权限。

def init_directories(request):
    os.makedirs("A/B/C", mode=0o700)
    return HttpResponse("Done!")

       在Python<3.6版本中,创建出的文件夹A、B和C的权限都是700。但是,在Python>3.6版本中,只有最后一个文件夹C的权限为700,其它文件夹A和B的权限为默认的755。

       02 扩展的Zip Slip

       在Web应用中,通常需要解压上传后的压缩文件。在Python中,很多人都知道TarFile.extractall与TarFile.extract函数容易受到Zip Slip攻击。攻击者通过篡改压缩包中的文件名,使其包含路径遍历(../)字符,从而发起攻击。

       03 Unicode清洗器绕过

       Unicode支持用多种形式来表示字符,并将这些字符映射到码点。在Unicode标准中,不同的Unicode字符有四种归一化方案。程序可以使用这些归一化方法,以独立于人类语言的标准方式来存储数据,例如用户名。

       04 Unicode编码碰撞

       Unicode字符会被映射成码点。然而,有许多不同的人类语言,Unicode试图将它们统一起来。这就意味着不同的字符很有可能拥有相同的“layout”。例如,小写的土耳其语ı(没有点)的字符是英语中大写的I。在拉丁字母中,字符i也是用大写的 I 表示。在Unicode标准中,这两个不同的字符都以大写形式映射到同一个码点。

       05 IP地址归一化

       在Python<3.8中,IP地址会被ipaddress库归一化,因此前缀的零会被删除。这种行为乍一看可能是无害的,但它已经在Django中导致了一个高严重性的漏洞(CVE-2021-33571)。攻击者可以利用归一化绕过校验程序,发起服务端请求伪造攻击(SSRF,Server-Side Request Forgery)。

       关于"Python语言中的几个安全陷阱,你都知道吗?"的话题到这里就结束了,老男孩教育是Python培训领域的专家,2012年就开展了Python培训课程,是行业内较早的Python培训机构,积累了大量的Python培训教学经验,并能全局把控企业用人指标,让学员轻松拿下高薪职位!

  推荐阅读:

       Python语言反转字符串功能可以使用哪些方法?老男孩python培训班

       这8个工具,用来做应用程序开发太合适了!老男孩python课程培训

       【Python基础教程】Python语言中常见的运算符及用法汇总!

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。