SQL注入漏洞浅析及防御,从零基础到精通,收藏这篇就够了!


01

啥?SQL注入?这货是来搞事情的!

想象一下,你精心设计的网站,就像一个戒备森严的城堡,而SQL注入就像一个身怀绝技的盗贼,通过你留下的“后门”——直接把用户输入的查询参数拼接到SQL语句里,溜进你的数据库,为所欲为!

SQL注入攻击,说白了,就是黑客利用你Web应用的漏洞,塞给你一些“特殊”的SQL语法组合,然后你的程序屁颠屁颠地执行了这些“特殊指令”,最终让黑客控制了你的数据库。

这就像你把家门钥匙直接贴在门上,然后跟小偷说:“随便进,随便拿!”

那么,SQL注入这货是怎么来的呢?一般来说,有以下几种“作案动机”:

  • 类型处理不当:程序猿哥哥/姐姐偷懒,没对输入的数据类型进行严格校验。
  • 数据库配置太随意:数据库的安全配置就像内裤,穿好才能防止走光!
  • 查询集处理不合理:查询逻辑混乱,给黑客留下可乘之机。
  • 错误处理太粗糙:错误信息暴露太多,给黑客提供了攻击线索。
  • 转义字符处理不到位:该转义的没转义,导致SQL语句被篡改。
  • 多个提交处理不当:多个请求一起上,防不住啊!

02

SQL注入的“七宗罪”!

这SQL注入一旦得手,那可是要命的!简直是“潘多拉的魔盒”,释放出来的都是灾难!

扫描二维码关注公众号,回复: 17552567 查看本文章
  • 隐私泄露,底裤都被扒光!:数据库里存着用户的各种敏感信息,姓名、电话、地址、身份证号,甚至银行卡信息!一旦泄露,后果不堪设想!
  • 网页被篡改,脸都不要了!:网站内容被恶意修改,植入不良信息,严重损害品牌形象。
  • 网站被挂马,成病毒传播器!:在网页上植入恶意代码,用户访问网站就会被感染病毒,网站成了“僵尸网络”的帮凶!
  • 数据库被恶意操作,老窝都被端了!:数据库管理员账号被篡改,数据被恶意删除、修改,甚至整个数据库都被破坏!
  • 服务器被远程控制,任人宰割!:黑客通过数据库服务器提供的操作系统支持,修改或控制操作系统,为所欲为!
  • 硬盘数据被破坏,系统直接瘫痪!:更狠的是,直接破坏硬盘数据,导致整个系统瘫痪,让你欲哭无泪!

更可怕的是,有些数据库系统还能让SQL指令操作文件系统,这简直就是给黑客开了“上帝模式”,想干啥就干啥!

03

扒一扒经典SQL注入的“作案手法”!

想要防住SQL注入,就得先了解它的“作案手法”。 孙子兵法都说了:“知己知彼,百战不殆!

咱们就拿DVWA靶场low级别的SQL注入源码来做个“解剖”,看看这货是怎么搞事情的。

DVWA源码下载地址:http://www.dvwa.co.uk

打开:DVWAulnerabilitiessqlisourcelow

看看下面的PHP代码:

注意看第一个红框,这里使用了$_REQUEST来接收参数。$_REQUEST是个啥?它就像一个“大杂烩”,包含了$_GET$_POST$_COOKIE的数据。也就是说,不管你是用GET还是POST方式传过来的参数,它都能接收。

但是,真正的问题出在第二个红色框:$query = "SELECT first_name, last_name FROM users WHERE user_id =‘$id’;"; 这段代码直接把$_GET传过来的参数$id拼接到SQL查询语句里了,而且没有任何处理! 这就相当于直接把钥匙交给小偷啊!

根据这段代码,我们可以断定,这是一个字符型的SQL注入,也就是GET类型的注入。

举两个简单的例子:

EXAMPLE

  1. 假设$id是用户输入的查询条件,而SQL语法是引号双双闭合的。如果你输入一个单引号,就会出现语法错误,如下图所示:

  1. 如果你输入1 or 1=1,系统会判定为或逻辑,只要有一个条件为真,就会输出查询结果。显然1=1是为真的,所以系统会查询出所有用户信息,如下图所示:

04

如何穿上“防弹衣”,抵御SQL注入?

既然知道了SQL注入的危害和“作案手法”,那就要想办法防住它! 别慌,老司机这就教你几招!

  1. PreparedStatement:简单粗暴,效果杠杠的!

这是个简单又有效的方法! 采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

使用PreparedStatement的好处:

  • 代码可读性高,易于维护:代码结构清晰,方便阅读和修改。
  • 性能杠杠的:PreparedStatement尽最大可能提高性能,让你的网站跑得更快!
  • 安全性大大提高:这才是最重要的!

原理:

SQL注入只对SQL语句的准备(编译)过程有破坏作用。 而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对SQL语句进行解析和准备,因此也就避免了SQL注入问题。

  1. 字符串过滤:亡羊补牢,犹未晚也!

这是一个比较通用的办法:

||之间的参数可以根据自己程序的需要添加)

总之,防范SQL注入,就像穿内裤一样重要!一定要重视起来,别让你的网站“裸奔”!

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

猜你喜欢

转载自blog.csdn.net/Javachichi/article/details/146947823
今日推荐