论文部分内容阅读
摘要:近年来,动态编程语言逐渐受到重视。作为动态编程语言中最典型的一种,Python 因库类支撑庞大、编写灵活、语法简练等优势被广泛应。但尽管如此,Python程序也还不够完善,尤其是在安全性、可靠性方面还面临挑战。本文联系实际,主要围绕Python程序缺点的检测与定位内容谈谈Python安全应用程序的开发问题,以供参考。
关键词:Python程序;缺陷检测;安全性能
中图分类号:G4 文献标识码:A 文章编号:(2020)-37-139
一、Python程序性能优点与缺陷
作为一种典型的动态编程语言,Python程序有自己的特性。在Python程序中,一切数据结构都是存储在堆空间中的对象。Python程序中的变量可以指向任何类型,是引用变量,变量没有限制,在使用前也不需要就变量作出声明。Python程序常用的语句结构有以下几大类:赋值语句、结构定义依据、模块引入语句以及控制语句、上下文管理语句、异常语句、变量作用域生命语句等。语句结构整体上比较简单,文风简洁。但同时Python层序也迟支持丰富的表达式,表达式类型有比较表达式、算术表达式等。由于支持多种类型的表达式,再加之语句比较多样,因此Python程序分析比较困难复杂,进行程序分析时往往需要花费大量时间。相关统计表明,在所有编程语言中,Python的流行度是最高的,这主要与Python程序的诸多灵活特性有关。具体如,在使用Python程序时,不需要提前对程序中的变量作出声明,程序中的变量更根据具体情况适时改变。不仅如此,在运动过程中程序中的对象属性集也能实现动态改变。且相较于其他类型的编程语言,Python程序的外部库类支持十分庞大,这些库类可以帮助程序员进行快速开发【1】。
Python程序的缺陷也同样突出。在进行开发时,程序员易受到Python程序动态对象属性集以及动态类型的干扰,严重时会造成程序奔溃。在调试程序时,程序员需要在了解程序行为与定位程序缺陷等方面投入大量时间,从而导致程序开发进度延缓。造成分析Python程序困难的原因有:Python程序中有很多动态特性,这些动态特性干扰分析过程,造成分析结果不精准。程序中的许多外部库函数是由其他程序语言实现的,这意味着传统分析方法无法准确定位程序缺陷根源。Python程序的诸多灵活特性是其的优势但也是缺陷,这些灵活特性会引起列表下标越界或值错误。在程序开发与应用过程中需对这些缺陷作出检测,但因其自身的独特性,基于静态分析的缺陷检测以及基于动态分析的缺陷检测都不是十分适用于Python程序,检测结果的精度得不到保证。基于符号分析的缺陷检测因为受到编码困难、状态爆炸等的影响,无法直接用于Python检测。在进行程序开发与调试时,Python的动态构造、动态类型会大大增加调试的难度,即使开发人员知道程序存有缺陷,但也很难实现对程序缺陷的快速定位与调整【2】。
二、关于Python安全应用程序开发
基于Python程序的特征特点,这里提出以下几种缺陷检测方法来为Python程序的安全性能提供保障。
一是基于概率分析的类型推导方法,这一方法结合自然语言、程序语义两大方面的类型提示,通过引入概率约束的范式,化类型推导为概率推导,这样传统方法中数据流不完整、推导困难等方法就得到有效解决。在传方法下,程序中的数据流信息是主要的推导依据,且基于数据流信息的推导方向是变量类型推导。
但Python程序中有大量的外部函数,这就意味着应用这一方法时很难获得完整的数据流,连续性推导也就很难实现。在进行程序开发与调整时应当注意到,Python程序中不仅有数据流,还有变量命名、属性访问等各类性提示,这些提示能为推导提供帮助。但变量命名、属性访问等方面的类型提示与数据流有些许不同,程序中的数据流比较稳定,而这些类型提示的不完整性、不确定性很强。
因此在开发与调整过程中如何使这类型提示处在一个相对稳定的状态,这是程序员需要思考与解决的问题。引入概率的方法进行类型推导,构建一个概率推导过程,通过概率推导将Python程序中的各类型提示相互叠加、传播,最终使其的状态相对稳定,这样推导结果也就较为稳定【3】。
二是一种基于符号预测分析的缺陷检测方法,通过符号分析对一个正确执行的相邻执行中隐含的缺陷进行分析预测,使程序缺陷能得到及时发现与解决。具体的检测分析方法与流程如下:收集一个正确执行的执行轨迹,对该执行轨迹进行编码约束,对部分未执行的分支也编码成符号约束。将符号约束通过约束求解器进行求解,通过求解检测程序中的错误,同时在这一过程中生成能触发这些错误的输入。通过这样的一个检测过程,能基本上检测出程序中的缺陷。
三、結语
综上所述,Python程序有优点也有缺陷,针对Python程序当前存在的缺点难预测、难定位等问题,要能基于Python程序特点与当前先进技术手段不断探寻正确、有效的解决途径,以提升Python的安全性与可靠性。
参考文献
[1]王晓东.Python安全应用程序开发方法研究[J].福建电脑,2020,36(07):70-72.
[2]李志军.Python在网络空间安全中的应用初探[J].电脑编程技巧与维护,2020(07):167-169.
[3]刘佩瑶. Python脚本的脆弱性检测研究与实现[D].北京交通大学,2019.
关键词:Python程序;缺陷检测;安全性能
中图分类号:G4 文献标识码:A 文章编号:(2020)-37-139
一、Python程序性能优点与缺陷
作为一种典型的动态编程语言,Python程序有自己的特性。在Python程序中,一切数据结构都是存储在堆空间中的对象。Python程序中的变量可以指向任何类型,是引用变量,变量没有限制,在使用前也不需要就变量作出声明。Python程序常用的语句结构有以下几大类:赋值语句、结构定义依据、模块引入语句以及控制语句、上下文管理语句、异常语句、变量作用域生命语句等。语句结构整体上比较简单,文风简洁。但同时Python层序也迟支持丰富的表达式,表达式类型有比较表达式、算术表达式等。由于支持多种类型的表达式,再加之语句比较多样,因此Python程序分析比较困难复杂,进行程序分析时往往需要花费大量时间。相关统计表明,在所有编程语言中,Python的流行度是最高的,这主要与Python程序的诸多灵活特性有关。具体如,在使用Python程序时,不需要提前对程序中的变量作出声明,程序中的变量更根据具体情况适时改变。不仅如此,在运动过程中程序中的对象属性集也能实现动态改变。且相较于其他类型的编程语言,Python程序的外部库类支持十分庞大,这些库类可以帮助程序员进行快速开发【1】。
Python程序的缺陷也同样突出。在进行开发时,程序员易受到Python程序动态对象属性集以及动态类型的干扰,严重时会造成程序奔溃。在调试程序时,程序员需要在了解程序行为与定位程序缺陷等方面投入大量时间,从而导致程序开发进度延缓。造成分析Python程序困难的原因有:Python程序中有很多动态特性,这些动态特性干扰分析过程,造成分析结果不精准。程序中的许多外部库函数是由其他程序语言实现的,这意味着传统分析方法无法准确定位程序缺陷根源。Python程序的诸多灵活特性是其的优势但也是缺陷,这些灵活特性会引起列表下标越界或值错误。在程序开发与应用过程中需对这些缺陷作出检测,但因其自身的独特性,基于静态分析的缺陷检测以及基于动态分析的缺陷检测都不是十分适用于Python程序,检测结果的精度得不到保证。基于符号分析的缺陷检测因为受到编码困难、状态爆炸等的影响,无法直接用于Python检测。在进行程序开发与调试时,Python的动态构造、动态类型会大大增加调试的难度,即使开发人员知道程序存有缺陷,但也很难实现对程序缺陷的快速定位与调整【2】。
二、关于Python安全应用程序开发
基于Python程序的特征特点,这里提出以下几种缺陷检测方法来为Python程序的安全性能提供保障。
一是基于概率分析的类型推导方法,这一方法结合自然语言、程序语义两大方面的类型提示,通过引入概率约束的范式,化类型推导为概率推导,这样传统方法中数据流不完整、推导困难等方法就得到有效解决。在传方法下,程序中的数据流信息是主要的推导依据,且基于数据流信息的推导方向是变量类型推导。
但Python程序中有大量的外部函数,这就意味着应用这一方法时很难获得完整的数据流,连续性推导也就很难实现。在进行程序开发与调整时应当注意到,Python程序中不仅有数据流,还有变量命名、属性访问等各类性提示,这些提示能为推导提供帮助。但变量命名、属性访问等方面的类型提示与数据流有些许不同,程序中的数据流比较稳定,而这些类型提示的不完整性、不确定性很强。
因此在开发与调整过程中如何使这类型提示处在一个相对稳定的状态,这是程序员需要思考与解决的问题。引入概率的方法进行类型推导,构建一个概率推导过程,通过概率推导将Python程序中的各类型提示相互叠加、传播,最终使其的状态相对稳定,这样推导结果也就较为稳定【3】。
二是一种基于符号预测分析的缺陷检测方法,通过符号分析对一个正确执行的相邻执行中隐含的缺陷进行分析预测,使程序缺陷能得到及时发现与解决。具体的检测分析方法与流程如下:收集一个正确执行的执行轨迹,对该执行轨迹进行编码约束,对部分未执行的分支也编码成符号约束。将符号约束通过约束求解器进行求解,通过求解检测程序中的错误,同时在这一过程中生成能触发这些错误的输入。通过这样的一个检测过程,能基本上检测出程序中的缺陷。
三、結语
综上所述,Python程序有优点也有缺陷,针对Python程序当前存在的缺点难预测、难定位等问题,要能基于Python程序特点与当前先进技术手段不断探寻正确、有效的解决途径,以提升Python的安全性与可靠性。
参考文献
[1]王晓东.Python安全应用程序开发方法研究[J].福建电脑,2020,36(07):70-72.
[2]李志军.Python在网络空间安全中的应用初探[J].电脑编程技巧与维护,2020(07):167-169.
[3]刘佩瑶. Python脚本的脆弱性检测研究与实现[D].北京交通大学,2019.