论文部分内容阅读
摘 要:计算机软件的安全检测在开发及运用过程中,是其不可忽略的一个重要环节。安全检测的目的是发现软件运行时出现的故障,然后针对其隐藏的风险进行修补,以保证软件的正常运行。但是目前的计算机检测技术无法完全避免错误和漏洞的出现,不能保证软件绝对是安全的。本文针对安全检测技术应用中的问题和方法,进行了详细的剖析。
关键词:计算机软件;安全检测;方法
1 计算机软件存在的漏洞和风险
1.1 软件加密不可靠
加密主要存有以下弱点:(1)加密算法不够严密,容易被破解;(2)加密锁受处理能力的限制,无法为软件提供强有力的保护;(3)数据签名工作做得不好,数据常常被攻击者更改。因此,在对软件进行安全测试时,要重点测试软件的加密弱点。
1.2 错误处理。一般来说,错误处理会返回部分信息给软件使用者。在这个过程中,如果调用了一些不该有的功能,那么这些信息就有可能被其他人利用,一些黑客甚至会通过分析这类错误信息来制定攻击策略。
1.3 权限设置问题。一般来说,在对软件进行设计时,要分权限。在软件中分配操作员的权限,可以规划操作员的操作权限,可以使操作人员在工作中只能操作他权力范围内的工作内容,出现问题可以找到负责人。但是如果赋予的权限过大,那么操作人员就很可能越过权限去做一些危害安全的操作。权限过大是设计空间过大造成的。因此,测试人员在测试应用程序的权限时,应注意检查设计空间的大小。
2 常用的安全检测方法
2.1 渗透测试。渗透测试其本质是以测试工具为辅,凭借测试人员的攻防能力和经验,模拟黑客攻击的过程,提前发现软件存在的问题,并及时地予以更正。它的优点在于:它能站在攻击方的角度,深度挖掘软件中存在的安全漏洞,一般发现的问题都是真实存在且极为严重的。但也正因为这样,测试人员在选取测试工具时,要格外小心,尽量选择可控制、不具备攻击性的工具。因为如果选择不当,将会导致病毒和木马的入侵和扩散,给整个系统的运行带来不利影响。此外,渗透测试还存在一些缺点:它的成果大多取决于测试人员的攻防能力和经验。它所模拟的测试数据存有局限性,覆盖率不高。
2.2 静态测试。与其他测试方法相比,静态测试并不是通过运行被检测软件来完成的,而是通过分析源程序的语法、结构等来检测软件的编程是否合符标准。此类测试方法既可以靠测试人员完成,也可以通过某些特定的软件工具自动完成,比较常见的静态測试工具有:Logscope、PRQA两种。与动态测试相比,它具有快速找到安全漏洞,返工成本低、覆盖率和查错率高等优点。但是,它测试所需要的时间也很长。
2.3 黑盒测试。所谓黑盒测试就是把软件看作一个黑箱子,测试人员不需要知道这个黑箱子里面装的是什么、黑箱是怎么操作的,即不需要花心思去了解软件的内部构造。测试人员需要做的就是严格把关黑箱的进出口,即仅仅需要了解软件的输入和输出结果。这样一来,为测试人员减少了很多测试工序和测试时间,测试人员的工作与编程人员的工作完全是分开的。但是,如果完全像软件使用者一样去使用和操作软件,也会产生一些问题。首先测试人员只能对一小部分输入进行测试,不能对所有输入进行测试。其次,测试人员在测试软件时,采用的测试用例很可能是开发人员已经使用过的,测试效率不高。再者,它并不能对软件的某个程序段进行单独测试,而这类程序段或许存在错误。因此,测试人员在使用黑盒测试方法时,应该按照以下四个步骤来判断程序的正确性:
(1)认真审视软件的行为是否处于正常范围;(2)仔细检查输出结果的正确性;(3)输入各种信息,结合(1)和(2)来观测软件的反应程度;(4)时常对软件的关键部位进行诊断。
2.4 白盒测试。如果黑盒测试是中医,那么白盒测试就是西医了。与黑盒测试相比,白盒测试方法是把被软件产品视为一个打开的盒子,需要测试人员去理解软件的内部结构以及运行方式。测试人员需要利用某些测试工具,跟踪并检查某个输入信息进入软件之后对软件的影响、软件是如何处理这些影响以及处理方式是否符合标准。比如,对于一个与SQL Server数据库连接的软件系统来说,可以简单地把程序的作用看作是:把用户输入的数据通过SQL命令请求后台数据库,数据库把请求的数据返回给程序的界面层展示给用户。可以把SQL Server自带的工具事件探查器当成是一个检查SQL数据传输的精密仪器,它可以记录软件客户端与服务器数据库之间交互的所有举动,测试人员能清楚地知道软件究竟发挥了什么作用。白盒测试的优点在于它能帮助测试人员熟悉代码的每条路径,检查出藏于代码中的错误。但是它也有缺点,那就是测试成本高,无法检测代码中遗漏的路径和数据敏感性错误。
2.5 灰盒测试方法。灰盒测试综合了白盒测试和黑盒测试的特点。主要表现为:它既要检测输出、输入是否正确,又要关注程序内部运行状态。如有时输出是正确的,但内部早已出现了错误,如果采用白盒测试方法来测试,效率会非常低,在此种情况下,就需要采取灰盒测试方法。与黑、白盒测试方法相比,灰盒测试有以下几个特点:(1)利用灰盒测试方法,测试人员能更为全面地了解软件产品;(2)与白盒测试相比,灰盒测试因为程序代码的改变而导致用例无效的几率更低;(3)与白盒测试相比,灰盒测试方法需要测试人员去了解程序的代码逻辑。利用灰盒测试方法进行测试需要注意以下几点问题:(1)灰盒测试是从软件的整体出发的。因此,测试人员在进行测试设计时,要从软件的整体出发;(2)将灰盒测试用于单元测试,而非集成测试;(3)灰盒测试方法需要测试人员深入了解产品的代码逻辑。因此,在测试时,业务逻辑图是非常重要的,测试人员需要按照业务逻辑图来划分功能点,并扩展用例。
结束语
计算机软件有程序复杂、规模庞大等特点,故而在进行安全测试时需要分别对代码级、系统级以及需求级进行有针对性的详尽检测。如果遇到特大规模的软件,还需从结构设计等方面进行细致的分析。并根据实际情况,按照详细分析的过程选择其所需要的相关分析技术。软件的安全检测是系统化的一个过程,要解决整个系统内全部的安全问题,普通的方法是十分困难的,故进行具体的安全检测时,如何选择有效的、具有可行性的方案,是软件检测员必须认真思考的问题。
关键词:计算机软件;安全检测;方法
1 计算机软件存在的漏洞和风险
1.1 软件加密不可靠
加密主要存有以下弱点:(1)加密算法不够严密,容易被破解;(2)加密锁受处理能力的限制,无法为软件提供强有力的保护;(3)数据签名工作做得不好,数据常常被攻击者更改。因此,在对软件进行安全测试时,要重点测试软件的加密弱点。
1.2 错误处理。一般来说,错误处理会返回部分信息给软件使用者。在这个过程中,如果调用了一些不该有的功能,那么这些信息就有可能被其他人利用,一些黑客甚至会通过分析这类错误信息来制定攻击策略。
1.3 权限设置问题。一般来说,在对软件进行设计时,要分权限。在软件中分配操作员的权限,可以规划操作员的操作权限,可以使操作人员在工作中只能操作他权力范围内的工作内容,出现问题可以找到负责人。但是如果赋予的权限过大,那么操作人员就很可能越过权限去做一些危害安全的操作。权限过大是设计空间过大造成的。因此,测试人员在测试应用程序的权限时,应注意检查设计空间的大小。
2 常用的安全检测方法
2.1 渗透测试。渗透测试其本质是以测试工具为辅,凭借测试人员的攻防能力和经验,模拟黑客攻击的过程,提前发现软件存在的问题,并及时地予以更正。它的优点在于:它能站在攻击方的角度,深度挖掘软件中存在的安全漏洞,一般发现的问题都是真实存在且极为严重的。但也正因为这样,测试人员在选取测试工具时,要格外小心,尽量选择可控制、不具备攻击性的工具。因为如果选择不当,将会导致病毒和木马的入侵和扩散,给整个系统的运行带来不利影响。此外,渗透测试还存在一些缺点:它的成果大多取决于测试人员的攻防能力和经验。它所模拟的测试数据存有局限性,覆盖率不高。
2.2 静态测试。与其他测试方法相比,静态测试并不是通过运行被检测软件来完成的,而是通过分析源程序的语法、结构等来检测软件的编程是否合符标准。此类测试方法既可以靠测试人员完成,也可以通过某些特定的软件工具自动完成,比较常见的静态測试工具有:Logscope、PRQA两种。与动态测试相比,它具有快速找到安全漏洞,返工成本低、覆盖率和查错率高等优点。但是,它测试所需要的时间也很长。
2.3 黑盒测试。所谓黑盒测试就是把软件看作一个黑箱子,测试人员不需要知道这个黑箱子里面装的是什么、黑箱是怎么操作的,即不需要花心思去了解软件的内部构造。测试人员需要做的就是严格把关黑箱的进出口,即仅仅需要了解软件的输入和输出结果。这样一来,为测试人员减少了很多测试工序和测试时间,测试人员的工作与编程人员的工作完全是分开的。但是,如果完全像软件使用者一样去使用和操作软件,也会产生一些问题。首先测试人员只能对一小部分输入进行测试,不能对所有输入进行测试。其次,测试人员在测试软件时,采用的测试用例很可能是开发人员已经使用过的,测试效率不高。再者,它并不能对软件的某个程序段进行单独测试,而这类程序段或许存在错误。因此,测试人员在使用黑盒测试方法时,应该按照以下四个步骤来判断程序的正确性:
(1)认真审视软件的行为是否处于正常范围;(2)仔细检查输出结果的正确性;(3)输入各种信息,结合(1)和(2)来观测软件的反应程度;(4)时常对软件的关键部位进行诊断。
2.4 白盒测试。如果黑盒测试是中医,那么白盒测试就是西医了。与黑盒测试相比,白盒测试方法是把被软件产品视为一个打开的盒子,需要测试人员去理解软件的内部结构以及运行方式。测试人员需要利用某些测试工具,跟踪并检查某个输入信息进入软件之后对软件的影响、软件是如何处理这些影响以及处理方式是否符合标准。比如,对于一个与SQL Server数据库连接的软件系统来说,可以简单地把程序的作用看作是:把用户输入的数据通过SQL命令请求后台数据库,数据库把请求的数据返回给程序的界面层展示给用户。可以把SQL Server自带的工具事件探查器当成是一个检查SQL数据传输的精密仪器,它可以记录软件客户端与服务器数据库之间交互的所有举动,测试人员能清楚地知道软件究竟发挥了什么作用。白盒测试的优点在于它能帮助测试人员熟悉代码的每条路径,检查出藏于代码中的错误。但是它也有缺点,那就是测试成本高,无法检测代码中遗漏的路径和数据敏感性错误。
2.5 灰盒测试方法。灰盒测试综合了白盒测试和黑盒测试的特点。主要表现为:它既要检测输出、输入是否正确,又要关注程序内部运行状态。如有时输出是正确的,但内部早已出现了错误,如果采用白盒测试方法来测试,效率会非常低,在此种情况下,就需要采取灰盒测试方法。与黑、白盒测试方法相比,灰盒测试有以下几个特点:(1)利用灰盒测试方法,测试人员能更为全面地了解软件产品;(2)与白盒测试相比,灰盒测试因为程序代码的改变而导致用例无效的几率更低;(3)与白盒测试相比,灰盒测试方法需要测试人员去了解程序的代码逻辑。利用灰盒测试方法进行测试需要注意以下几点问题:(1)灰盒测试是从软件的整体出发的。因此,测试人员在进行测试设计时,要从软件的整体出发;(2)将灰盒测试用于单元测试,而非集成测试;(3)灰盒测试方法需要测试人员深入了解产品的代码逻辑。因此,在测试时,业务逻辑图是非常重要的,测试人员需要按照业务逻辑图来划分功能点,并扩展用例。
结束语
计算机软件有程序复杂、规模庞大等特点,故而在进行安全测试时需要分别对代码级、系统级以及需求级进行有针对性的详尽检测。如果遇到特大规模的软件,还需从结构设计等方面进行细致的分析。并根据实际情况,按照详细分析的过程选择其所需要的相关分析技术。软件的安全检测是系统化的一个过程,要解决整个系统内全部的安全问题,普通的方法是十分困难的,故进行具体的安全检测时,如何选择有效的、具有可行性的方案,是软件检测员必须认真思考的问题。