SQL注入漏洞防护看这一篇就够了!(1)

● 网页篡改:通过操作数据库对特定网页进行篡改

●网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击

●数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改

●服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统

●破坏硬盘数据,瘫痪全系统

一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。

3、经典SQL注入源码浅析


孙子兵法说“知己知彼,百战不殆”。只有了解了对手才能够更好的击败他!

采用靶场DVWA靶场low级别的SQL注入源码进行分析DVWA源码下载地址:http://www.dvwa.co.uk打开:DVWA\vulnerabilities\sqli\source\low。如下面的php代码所示。第一个红框使用的是 _ R E Q U E S T 的传输参数。 \_REQUEST的传输参数。 _REQUEST的传输参数。_REQUEST — HTTP Request变量默认情况下包含了 _ G E T , \_GET, _GET_POST 和 _ C O O K I E 的数组。也就是说,再不关心是 g e t 过来的还是 p o s t ,总之要取得某一个键的值,就用 \_COOKIE的数组。也就是说,再不关心是get过来的还是post,总之要取得某一个键的值,就用 _COOKIE的数组。也就是说,再不关心是get过来的还是post,总之要取得某一个键的值,就用_REQUEST就可以了。主要的问题就是出现在第二个红色框, q u e r y = " S E L E C T f i r s t _ n a m e , l a s t _ n a m e F R O M u s e r s W H E R E u s e r _ i d = ‘ query = "SELECT first\_name, last\_name FROM users WHERE user\_id =‘ query="SELECTfirst_name,last_nameFROMusersWHEREuser_id=id’;"; 这段代码采用的是 _ G E T 传输的方式,直接将参数 \_GET传输的方式,直接将参数 _GET传输的方式,直接将参数name拼接到了数据库查询语句中了,没有做任何处理。由此根据代码也可以断定,这将可能导致一个字符型的SQL注入,也就是GET类型的注入。

举两个简单的例子:

1、$id为用户输入需要查询的条件,而SQL语法是引号双双闭合的,如果输入一个单引号,就会出现语法报错

2、如果输入1 or 1=1,系统判定为或逻辑,只要有一个条件为真就会输出查询结果,显然1=1是为真的,系统就会查询出对应信息

4、如何防御


1、PreparedStatement(简单而有效的方法)

采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

使用好处:

(1).代码的可读性和可维护性.

(2).PreparedStatement尽最大可能提高性能.

(3).最重要的一点是极大地提高了安全性.

原理:

SQL注入只对SQL语句的准备(编译)过程有破坏作用

而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,

而不再对SQL语句进行解析,准备,因此也就避免了SQL注入问题.

2、字符串过滤

比较通用的一个办法:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值