文章目录
1)安全性测试是什么?
安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,其主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,安全指标不同,测试策略也不同。
但安全是相对的,安全性测试并不能最终证明应用程序是安全的,而只能验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。例如,测试应用软件在防止非授权的内部或外部用户的访问或故意破坏等情况时的运作。
-
安全性测试一般分为应用程序级别和系统级别:
-
应用程序级别:包括对应数据或业务功能的访问,核实应用程序的用户权限只能操作被授权访问的那些功能或数据。
-
操作系统级别:包括对操作系统的目录或远程访问,主要核实具备系统和应用程序访问权限的操作者才能访问系统和应用程序。
-
软件漏洞,设计上的缺陷或程序问题;
-
数据库的安全性,这也是系统安全性的核心。
-
2)为什么要进行安全性测试?
为什么进行安全性测试,或者说,安全性到底会引起哪些问题、后果:
1、数据库
提到安全,一个产品或一个网站最需要加强安全防范的就是数据库。如果缺少了安全性测试,在高手的sql盲注下,数据库就会逐步展现在黑客的面前,无论是数据库类型、表结构、字段名或是详细的用户信息,都有无数种手段可以让人“一览无余”。
2、权限
网站一般都规定了什么样的用户可以做什么事。比如版主可以修改所有人的帖子,而普通用户只能编辑自己的帖子,同样游客只能看大家的帖子,这就是简单的权限。如果少了安全性保证,那么就容易有人跳出权限做他不该做的事情。
简单举个小例子,一个登录模块,让你输入用户名密码。我们会老老实实的输入我们的用户名密码,比如"风落几番"-“password”。如果我们刻意的去绕过登录认证呢?
猜想一下这个sql,单说用户名,开发人员很可能会这样去数据库里对比:
Select count(id) from sys_user where username=‘XXX’
当然可能更复杂。如果我们在输入框里输入一段特殊的字符会如何?
‘or’1=1
这是段神奇的字符,因为这样这个sql就变成:
Select count(id) from sys_user where username=’‘or’1=1’
这样,我们就跳过了用户名的验证。。。
3、修改提交数据信息
举例:一个关于在线支付的商城,在安全性测试过程中,通过抓包抓到的提交价格,经过修改再发包可以通过。简单来说就是本来100块钱买的东西,抓包修改为1块就能成功购买。这就成为了一个巨大的隐患。
4、跨站脚本的安全隐患
- HTML注入。所有HTML注入范例只是注入一个JavaScript弹出式的警告框: