第一次作业软件测试之SQL注入
一、SQL注入的概念
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。数据注入主要是对数据库的注入,通过输入一些特殊的字符如“’” “/” “-” 等或字符组合,完成对SQL语句的破坏,造成系统查询、插入、删除操作的SQL,因为这些字符而改变原来的意图
二、模拟SQL注入
1、环境搭建
软件环境:操作系统、DBMS、语言、浏览器、WEB应用服务器
操作系统:Microsoft Windows XP
DBMSMYSQL
语言:HTML语言,PHP语言
浏览器:IE浏览器
WEB应用服务器:Apache
硬件环境:CPU、内存、网络环境
CPUInter(R) Core(TM)2 Duo CPU
内存:2.00GB
网络环境:IPv4
2、有关SQL注入应用程序的开发流程
数据库的准备
编写HTML代码如下:
<form method="post" action="login_process.php">
用户名:<input type="text" name="user_name"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登陆">
</form>
安装WAMPSERVER,安装完成后,在计算机的右下角有该软件的标志。将编写的代码拷贝到安装目录下的www文件夹中。打开任务管理器关掉计算机正在运行的IIS服务和SQLSERVER服务以使WAMPSERVER能够顺利打开MYSQLApache服务,单击Put Online完成对WAMPSERVER的配置。打开MYSQL console,单击回车键进入mysql>目录下,将中的代码复制并粘贴到界面中,新建名为login的数据库,在login数据库下,新建名为users的表,该表包含user_namepassword两个元组,其中,user_name被设为主键。然后在login中插入adminyanfeng两个用户及其相应的密码。结果如下:
下面是SQL代码
应用程序的开发
1> 前台程序登录界面
2> 后台程序开发登录处理程序
     
测试应用程序
首先打开IE浏览器,在地址栏里输入localhost/login.html进入登录界面,然后用数据库中创建的合法用户登录,用户名和密码均正确,则登录成功,反之登录失败!
测试过程:
<1> 用户名 admin 密码 admin 预期结果“登录成功!”,实际结果“登录成功!”截图如下:
<2> 未对登录处理程序改进前,输入“用户名 ‘or’’=’ 密码‘or’’=’ ”预期结果“登录失败!” 实际结果“登录成功!”。
<3> login_process.php修改后,输入“用户名 ‘or’’=’ 密码‘or’’=’ ”, 预期结果“登录失败!”
实际结果“登录失败!”。
3、产生SQL注入的原因
单引号造成的SQL命令含义的改变,数据库的不安全配置,数据库平台漏洞等。上述测试过程中的<2>即为一种由于单引号造成的SQLsql软件长什么样注入。
4、如何避免SQL注入
    针对本例的漏洞,解决方法为在login_process.php中将第二行、第三行的等号后面分别加入addslashes并将后面的变量用括号括起来。
三、如何理解SQL注入与软件测试之间的关系
软件测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中是没有缺陷,而SQL注入正是一种可以用一些特殊字符发现软件漏洞或缺陷的方法,也即是软件测试的方法之一。理解了攻击者惯用的SQL注入的途径和常用方法就可以针对这些情况对软件或数据库进行改进。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。