连载:(十一)软件测试技术——安全性测试

发表于:2009-04-29来源:作者:点击数: 标签:软件测试连载技术
安全性测试 是一项迫切需要进行的测试, 测试人员 需要像黑客一样攻击软件系统,找到软件系统包含的安全漏洞。 1.网页安全漏洞检测 一些设计不当的网站系统可能包含很多可以被利用的安全漏洞,这些安全漏洞如同给远程攻击者开了一个后门,让攻击者可以方便
安全性测试是一项迫切需要进行的测试,测试人员需要像黑客一样攻击软件系统,找到软件系统包含的安全漏洞。
1.网页安全漏洞检测
        一些设计不当的网站系统可能包含很多可以被利用的安全漏洞,这些安全漏洞如同给远程攻击者开了一个后门,让攻击者可以方便地进行某些恶意的攻击。例如,公共漏洞和披露网站CVE(Common Vulnerabilities and Exposures)公布了Element InstantShop中的Web网页add_2_basket.asp的一个漏洞项,允许远程攻击者通过隐藏的表单变量“price”来修改价格信息。这个表单的形式如下所示:

<INPUT TYPE = HIDDEN NAME = "id" VALUE = "AUTO0034">
<INPUT TYPE = HIDDEN NAME = "product" VALUE = "BMW545">
<INPUT TYPE = HIDDEN NAME = "name" VALUE = "Expensive Car">
<INPUT TYPE = HIDDEN NAME = "price" VALUE = "100">

        利用这个漏洞,不怀好意者可以任意设定price字段的值,然后提交给InstantShop网站的后台服务器,从而可能用100美元就可以获得一部BMW545。
        技巧:发现类似的安全漏洞的最好方法是进行代码审查。除了代码审查,测试人员还可以利用一些测试工具进行检查,例如:Paessler Site Inspector、Web Developer等。

2.SQL注入
        SQL注入是另外一个经常忽略的安全漏洞,但是SQL注入同时也是一种非常普遍的代码漏洞,它会导致数据库端的敏感数据泄漏,或者服务器受到黑客的控制。例如,下面的一段代码就存在SQL语句的注入漏洞。

SqlConnection sqlcon = sqlconnA;

//打开连接
sqlcon.Open();

//组合一条查询语句
SqlCommand cmd = "select count(*) from User where LogonName = ‘" + this.textBox1.Text +”’ and Password = ‘”+this.textBox2.Text;

SqlDataAdapter adpt = new SqlDataAdapter(cmd, sqlcon);

DataSet ds = new DataSet();
adpt.Fill(ds);
//关闭连接
sqlcon.Close();

//如果返回数据不为空,则验证通过
If(ds.Tables[0].Rows.Count>0)
{
   retuen true;
}
else
{
   Return false;
}

        这段代码从textBox1获得用户输入的用户名,从textBox2获得用户输入的密码,然后执行数据库查询操作。假设在textBox1的输入框输入一个已知的用户名,然后再做一些手脚,则可以不输入密码也能登录系统。这个字符串利用了SQL Server对单引号的处理方式,只要简单地组合成类似下面的字符串并输入到textBox1的输入框中即可。

原文转自:http://www.ltesting.net