软件安全实验三

实验三防止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防止代码

img

图 6成功防注入

4.实验心得

通过本次实验体验了一下SQL的防注入实验方法,也在实验过程了解了防止SQL的很多方法远不止通过Java的包防止SQL防注入;看了很多教程等寒假有时间再去试试其他的SQL防注入实验;目前的主流前端框架vue和后端ssm框架都有更加方便快捷的方法,在我实验过程中了解到了通过vue的axios去组织但是我前端界面没有用vue去重构所以没有通过这种方法,我选择使用调用Java的包去进行过滤操作。

5.代码

t, servletResponse);
}
}

}

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月4日
下一篇 2022年3月4日

相关推荐