由于之前计划想让大家了解哈安全性测试,所以近期工作比较闲暇,不忙就不妨研究了哈关于安全性测试的相关分解。
说到安全性测试,我想测试人员并不陌生,通常在一些web项目测试启动时,经理会让我们先测试功能,之后是性能,不过一般在功能测试的时候,其实我们已经接触了安全性测试,可能无意识而已。不信就回想哈,当你在做web登录模块测试的时候,肯定会设计到用户名密码的相关测试用例的设计,并执行测试,在这部分测试中,其实最主要的就是如何防止黑客破解用户名和密码而登录我们的web系统,简单的用户验证和密码MD5加密可能会解决一部分问题,但是并不能解决根本。从这里我们就引入通常情况下我们的安全性测试主要体现那些方面,如下:
1、系统漏洞
2、网络攻击
3、web漏洞
当然肯定不只是以上三部分,只不过这三天总体概括了一些常见的安全隐患而已。通过市场调查我们能发现,大约75%的漏洞在web应用系统本身,却只有25%的漏洞来自与网络和系统本身,所以这些数据应该引起我们足够的重视,作为一名测试人员,如何防患于未然,当就是我们的本职工作了。这里我们就web漏洞做一些简单分析,一般情况下,用户登录是黑客攻击主要切入点,一旦我们的这道防线被破解了之后,其他的防设等于都架空了,所以关于用户登录的攻击是最频繁的,需要引起我们的重视。如果有经验的人事应该知道,上互联网虽然打开几个小型企业网站,然后尝试去登录管理员账户,试用用户名密码都为admin去试一试,你会发现这些个企业是多么愚蠢,以至于用户名和密码都不更改,这样的网站即使被人攻击了也没有利用价值,曾用我一个同学就去互联网上收集了不少这样的网站,然后发现他们的管理员庄户都是默认状态。也许你现在觉得很好笑,并且很想去尝试,但是不要忘记了我们是测试人员,如何能让这样低级错误最好不要发生在我们的身上,不然肯定挂了。为了能提高安全意识就必须加强安全防护等级,所以对于登录模块的测试就显得尤为重要了。这里我们要讲到第二点了,目前许多web系统使用的简单开发语言和框架,必须目前比较多的asp、jsp和php等,在开发登录功能的时候,基本都是通过后来传输参数到前台,然后从前台页面将用户输入的内容传送到后台,然后在后台执行,根据登录举个例子:"select * from user where username = '"+username+"' and password = '"+password+"'"; 看到这个语句大家可能认为没错,确实没错,但是在黑客眼中那就是太容易攻击了,我们where后面条件就是前台传送的参数用户名和密码,输入正确的用户名和密码当然就可以登录,输入错误有那肯定就不能登录,可是正因为这个where后面的条件是自由组合,这里黑客正好利用了所谓sql条件判断语句的自由组合,让我们的语句最终输入变成这样,如:"select * from user where username = '"+username+"' and password = '"+password+"' or 1 = '1' "; 此时我们猛然觉悟,惊奇的发现,and和or的作用是什么了,这个语句只要or条件成立,and条件不论如何都可以顺利执行,这时我们只需要在用户名或者密码文本框中输入“' or 1 = '1”引号中内容,你就会发现我们没有任何权限验证就登录进入了,看起来非常神奇,由于好奇我还真就这个问题,自己开发了一个登录模块,然后去测试,发现结果果真如此,所以我们毅然不能低估安全性测试的重要性,一旦你不去理会他,你会发现的系统将会变得非常糟糕。
关于更多安全性测试问题,在下一讲再继续。