实验三防止SQL注入
1.实验目的
学习关于防止SQL的知识,进行SQL注入实验,通过实验体会到SQL注入的危害,学会解决防范SQL注入实验的方法
2.实验环境
Windows10,eclipse,火狐,MySQL
3.实验原理
SQL注入是比较常见的 络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐 登录,甚至篡改数据库。
3.1思路:
(1)寻找到SQL注入的位置
(2)判断服务器类型和后台数据库类型
(3)针对不通的服务器和数据库特点进行SQL注入攻击
3.2实验实例
(1)设计一个登录界面,要求输入用户名和密码
(2)可以这样输入实现免帐 登录
图 2正常登录
图 4注入成功
后台认证程序中会有如下的SQL语句:
String sql = “select * from user_table where username=
’ “+userName+” ’ and password=’ “+password+” ‘”;
当输入了上面的用户名和密码,上面的SQL语句变成:
SELECT * FROM user_table WHERE username=
‘’or 1 = 1 – and password=’’
(5)分析SQL语句:
条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;然后后面加两个-,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
(6)防止方法
使用Java包里的filter功能.它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response。所以用户发出的任何request都必然经过filter处理,我们就在filter处理用户request包含的敏感关键字,然后replace掉或是让页面转到错误页来提示用户,这样就可以很好的防sql注入了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMJdfVr6-1649239983883)(https://raw.githubusercontent.com/lmy12367/img/main/imgwps6E15.tmp.jpg)]
图 5filter防止代码

图 6成功防注入
4.实验心得
通过本次实验体验了一下SQL的防注入实验方法,也在实验过程了解了防止SQL的很多方法远不止通过Java的包防止SQL防注入;看了很多教程等寒假有时间再去试试其他的SQL防注入实验;目前的主流前端框架vue和后端ssm框架都有更加方便快捷的方法,在我实验过程中了解到了通过vue的axios去组织但是我前端界面没有用vue去重构所以没有通过这种方法,我选择使用调用Java的包去进行过滤操作。
5.代码
t, servletResponse);
}
}
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!