什么是软件安全性测试?安全测试有哪些测试⽅法和⼿段
⼆⼗⼀世纪,智能化的软件成为商业决策、推⼴等不可缺少的利器,很多软件涉及了客户商业上重要的信息资料,因此企业都很关⼼软件的安全性。往往⼀个细⼩的安全漏洞,对客户产⽣的影响都是巨⼤的。所以企业都想着尽可能的保证软件的安全性,确保软件在安全性⽅⾯能满⾜客户期望,在软件测试⾏业,安全测试的重要性是不⾔⽽喻的。
⼀、那么什么是软件安全性测试 ?
安全性测试是指有关验证应⽤程序的安全等级和识别潜在安全性缺陷的过程。应⽤程序级安全测试的主要⽬的是查软件⾃⾝程序设计中存在的安全隐患,并检查应⽤程序对⾮法侵⼊的防范能⼒,根据安全指标不同测试策略也不同。
⼆、安全性测试⼜有哪些⽅法和⼿段呢?
⽬前有许多种的测试⼿段可以进⾏安全性测试,安全测试⽅法分主要为三种:
①静态的代码安全测试:主要通过对源代码进⾏安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进⾏匹对,从中出代码中潜在的安 全漏洞。静态的源代码安全测试是⾮常有⽤的⽅法,它可以在编码阶段出所有可能存在安全风险的代码,这样开发⼈员可以在早期解决潜在的安
全问题。⽽正因为如此,静态代码测试⽐较适⽤于早期的代码开发阶段,⽽不是测试阶段。
②动态的渗透测试:渗透测试也是常⽤的安全测试⽅法。是使⽤⾃动化⼯具或者⼈⼯的⽅法模拟⿊客的输⼊,对应⽤系统进⾏攻击性测试,从中出运⾏时刻所存在的安全漏洞。这种测试的特点是真实有效,⼀般出来的问题都是正确的,也是较为严重的。但渗透测试⼀个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。
③程序数据扫描。⼀个有⾼安全性需求的软件, 在运⾏过程中数据是不能遭到破坏的,否则会导致缓冲区溢出类型的攻击。数据扫描的⼿段通常是进⾏内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,⽽这类漏洞使⽤除此之外的测试⼿段都难以发现。例如,对软件运⾏时的内存信息进⾏扫描,看是否存在⼀些导致隐患的信息,当然这需要专门的⼯具来进⾏验证(⽐如:HP WebInspect、IBM Appscan和Acunetix Web Vulnerability Scanner)。
三、常见的软件安全性缺陷和漏洞有哪些?
软件的安全包含很多⽅⾯的内容,主要的安全问题是由软件本⾝的漏洞造成的,下⾯我们说说⼏种常见的软件安全性缺陷和漏洞,⼤家在程序开发或是测试时不妨考虑或验证⼀下,我们所开发或是测试的程序,是否存在这些⽅⾯的安全隐患。
(1)SQL注⼊
所谓SQL注⼊式攻击,是攻击者把SQL命令插⼊到Web表单的输⼊域或页⾯请求的查询字符串,欺骗服务器执⾏恶意的SQL命令。在某些表单中,⽤户输⼊的内容直接⽤来构造(或者影响)动态SQL命令,或作为存储过程的输⼊参数,这类表单特别容易受到SQL注⼊式攻击。简单举个⼩例⼦,⼀个登录模块,让你输⼊⽤户名密码。我们⼀般都会⽼⽼实实的输⼊我们的⽤户名和密码。但如果我们刻意的去绕过登录认证呢?猜想下⾯这个sql语句,单说⽤户名,开发⼈员很可能会这样去数据库⾥对⽐:sql软件长什么样
Select * from sys_user where username=‘XXX’
当然可能更复杂,假如我们在输⼊框⾥输⼊下⾯⼀句特殊的字符会如何?’or‘1=1
这是段神奇的字符,因为这样这个sql变成:
Select * from sys_user where username=‘’or‘1=1’
这样我们跳过了⽤户名的验证,实现了⼊侵,是不是很简单,看到这⾥⼤家不妨动⼿尝试⼀下吧。
(2)修改提交数据
曾经某公司做过⼀个关于在线⽀付的商城,在安全性测试过程中,发现通过抓包抓到的提交价格(如使⽤⽕狐插件:live http headers),经过修改再发包可以通过。简单来说是本来100块钱买的东西,抓包修改为1块能成功购买。这成为了⼀个巨⼤的隐患。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论