Web安全加固

本文介绍了如何防范SQL注入,通过使用PreparedStatement修改SQL查询语句来增强安全性。同时,针对XSS跨站攻击,通过字符实体转换避免了恶意JS代码执行。此外,还讨论了上传攻击的防范,包括文件类型限制和源代码修改,防止恶意文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 SQL注入防范

1、运行项目,在用户登录界面用户名处输入万能密码admin' or 1=1 --',密码处输入任意字符,点击登录,观察是否能绕过后台登录系统。

原因:项目使用PreparedStatement方法完成SQL语句的执行,该方法要求在执行SQL语句之前,必须告诉JDBC哪些值作为输入参数,解决了普通Statement方法的注入问题,极大的提高了SQL语句执行的安全性。

2、在项目中找到用户登录模块所使用的关键SQL语句。

825db14767e61f141073a0b5fea39c54.jpg

3、修改登录模块的SQL查询相关语句如下所示:

825db14767e61f141073a0b5fea39c54.jpg

4、再次运行项目,使用万能密码admin' or 1=1 --'进行登录,成功登录。

2 XSS跨站防范

1、运行项目,在网站中寻找能够提交信息的文本框。提交JS代码:<script>alert("xxx")</script>,发现出现提示框。

2、在项目中编写代码,在用户提交留言和评论信息时将<和>分别替换为&gt;和&lt;。

5a852a19b3ded53b41b50627fe0237c1.jpg

 


3、再次在留言板和文章评论中提交JS代码:<script>alert("xxx")</script>,观察提交的代码能够正常显示。

6ad86f51d4f5464f0a28af5fd089b769.jpg

 

原因:在HTML中,某些字符是预留的。例如小于号 < 和大于号 > ,浏览器在解析他们时会误认为它们是标签。如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。

常见字符的实体转换表

显示结果

描述

实体名称

实体编号

 

空格

&nbsp;

&#160;

<

小于号

&lt;

&#60;

>

大于号

&gt;

&#62;

&

和号

&amp;

&#38;

"

引号

&quot;

&#34;

'

撇号

&apos; (IE不支持)

&#39;

3 上传攻击防范

1、运行项目,在网站中寻找能够上传文件的位置,上传菜刀马。一开始是长传不成功的,因为有格式限制===》查看源代码

966708a2158fce14a6d870aed99a311b.jpg

发现对文件类型有限制,而菜刀马文件是jsp文件。

 

2、将菜刀马的文件后缀修改为图片类型.jpg,上传。

a8e61c84f8cfc3e1d8b646cc0ad8b246.jpg

3、接下来我们要改变源代码,注释掉文件上传限制,使jsp文件也能上传

52e2fdb3ddab6816609c625f26de8e85.jpg

记得把jsp文件的格式改成utf-8,上传

b3e0239e598d81be1016e609049363d2.jpg

 

4、上传jsp后缀的菜刀马后,复制图片的链接,使用中国菜刀进行连接使用。

32c2176a1ff9e8c74fdeb6970d7827dc.jpg

5.进来了

53e14e8adcf61768c962beacbb443afa.jpg

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值