欢迎来到天天文库
浏览记录
ID:59317676
大小:20.50 KB
页数:2页
时间:2020-09-05
《软件测试之SQL注入.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一次实验—软件测试之SQL注入班级:2012级计算机科学与技术2班学号:姓名:王梦歌一、SQL注入的概念所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。二、模拟SQL注入1、环境搭建SQL注入需要的工作环境有:WampServer、Apache、MySQL等等,用WampServer进行测试
2、,WampServer是有利用Windows操作系统,配置Apache、MySQL、PHP等工具的开发环境。为我们模拟SQL注入提供良好的开发环境。2、有关SQL注入应用程序的开发流程(1)创建数据库和数据表createdatabaselogin;uselogin;createtableusers(user_namechar(20)primarykey,passwordchar(20)notnull);(2)添加测试数据insertintousersvalues(‘admin’;‘admin’);select*fromusers;(3)应用程序的开发Login.htmlLogi
3、n.php:用户名:密码:Login_process.php4、");mysql_select_db("users");$sql="select*fromuserswhereuser_name='$user_name'andpassword='$password'";$result=mysql_query($sql);$rows=mysql_num_rows($result);if($rows>0){echo"登陆成功!"}else{echo"登陆失败!"}?>(3)设计测试用例输入的账户名输入的密码预期结果实际运行结果测试结论AdminAdmin登录成功登陆成功!测试通过AbcdAbcd登录失败登录失败测试通过‘or’’=’‘or’’=’5、登录失败登陆成功!测试不通过,找到bug3、产生SQL注入的原因在编写登陆程序时,没有对用户所输入的数据进行更深一步的判断,只判断了数据库里是否有此用户,而没有对其进行SQL注入判断4、如何避免SQL注入(1)想要避免SQL注入,可以通过在编写代码时对其进行判断if(mysql_num_rows($result)>0&&preg_match(‘/^[wx80-xff]{3,15}$/’,$user_name)){print“登陆成功!”;}else{Print“登陆失败!”;}此判断是对用户是否输入特殊字符进行判断,如果输入特殊字符,提示登录失败(2)添加addslash6、es()函数 $user_name=addslashes($_POST["user_name"]);$password=addslashes($_POST["password"]);三、如何理解SQL注入与软件测试之间的关系SQL注入是软件测试员或者黑客为了找出网页程序中的漏洞,他们的目的是为了发现尽可能多的缺陷,进行完善和提高网站的安全性能。黑客是为了取得相应的权限,从事非法操作,而软件测试则解决SQL的注入问题就是避免造成大的事故,两者都是同样的原理找出程序中的错误并解决他们的错误。
4、");mysql_select_db("users");$sql="select*fromuserswhereuser_name='$user_name'andpassword='$password'";$result=mysql_query($sql);$rows=mysql_num_rows($result);if($rows>0){echo"登陆成功!"}else{echo"登陆失败!"}?>(3)设计测试用例输入的账户名输入的密码预期结果实际运行结果测试结论AdminAdmin登录成功登陆成功!测试通过AbcdAbcd登录失败登录失败测试通过‘or’’=’‘or’’=’
5、登录失败登陆成功!测试不通过,找到bug3、产生SQL注入的原因在编写登陆程序时,没有对用户所输入的数据进行更深一步的判断,只判断了数据库里是否有此用户,而没有对其进行SQL注入判断4、如何避免SQL注入(1)想要避免SQL注入,可以通过在编写代码时对其进行判断if(mysql_num_rows($result)>0&&preg_match(‘/^[wx80-xff]{3,15}$/’,$user_name)){print“登陆成功!”;}else{Print“登陆失败!”;}此判断是对用户是否输入特殊字符进行判断,如果输入特殊字符,提示登录失败(2)添加addslash
6、es()函数 $user_name=addslashes($_POST["user_name"]);$password=addslashes($_POST["password"]);三、如何理解SQL注入与软件测试之间的关系SQL注入是软件测试员或者黑客为了找出网页程序中的漏洞,他们的目的是为了发现尽可能多的缺陷,进行完善和提高网站的安全性能。黑客是为了取得相应的权限,从事非法操作,而软件测试则解决SQL的注入问题就是避免造成大的事故,两者都是同样的原理找出程序中的错误并解决他们的错误。
此文档下载收益归作者所有