安全小课堂第八十六期web漏洞挖掘之SQL注入

随着网络时代的飞速发展,网络安全问题越来越受大家的关注,而SQL注入攻击是最流行的攻击手段之一,SQL注入导致的安全问题数不胜数。那么它的攻击是如何展开的,我们又将如何防御它呢?

JSRC安全小课堂第八十六期,邀请到莫须有作为讲师就web漏洞挖掘之SQL注入为大家进行分享。也感谢白帽子盆友的精彩提问与互动~

参数预编译方式防止sql注入的技术原理是什么?

京安小妹

莫须有:

在使用参数化查询的情况下,数据库系统不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有破坏性的指令,也不会被数据库所运行。因为对于参数化查询来说,查询SQL语句的格式是已经规定好了的,需要查的数据也设置好了,缺的只是具体的那几个数据而已。所以用户能提供的只是数据,而且只能按照需求提供,无法更进一步做出影响数据库的其他举动来。

讲师

mybatis框架环境下最容易出现sql注入的场景有哪些?

京安小妹

莫须有:

第一种是模糊查询

这种场景可以通过采用预编译机制,避免SQL语句拼接的问题,从根源上防止SQL注入漏洞的产生;

第二种是in之后的参数

这种场景可以使用康将自带循环指令解决SQL语句动态拼接的问题;

第三种是order by之后的参数

这种场景可以在java层面做映射来解决

讲师

如何在研发阶段通过技术手段避免sql注入?

京安小妹

莫须有:

这里推荐三种方式:参数预编译、正则表达式过滤传入参数、字符串过滤

横向渗透。

如何感知到sql注入漏洞正在被利用?

京安小妹

莫须有:

对数据库进行监测,党对数据库进行操作时,自动对执行的SQL语句进行语义分析,并划分威胁等级,根据划分的威胁等级进行不同的处理;

创建蜜罐数据库,当对蜜罐数据库进行操作时,直接触发警报并阻断该IP的访问

讲师

如何高效扫描sql注入漏洞?

京安小妹

莫须有:

高效扫描SQL注入需要从两个角度考虑,一是:扫描速度,二是:扫描结果准确度

扫描速度可以通过多线程、高并发、分布式来实现

扫描结果准确度需要平时多收集有关cms注入漏洞的POC,在扫描时通过指纹识别和POC相结合来提高准确度

讲师

白帽子提问1:

Prestatement 和statement 区别?

莫须有:

Prestatement 对批量处理可以提高效率,statement 每次执行SQL语句都要进行编译

白帽子提问2:

预编译能完全防止sql注入吗

莫须有:

一般情况下使用得当是可以防止SQL注入的

白帽子提问3:

Order by,举个例子吧

莫须有:

查询文章标题为“安全”的文章并根据阅读量或者ID排序,select * from article where title = '安全' order by # asc,这里readVolume不是查询参数,无法使用预编译机制,只能这样拼接select * from article where title = '安全' order by $ asc。针对这种情况研发人员可以在java层面做映射进行解决。如当在根据阅读量或者ID排序时,我们可以限制用户只能输入0和1,当用户输入0时,我们在代码层面将其映射为readVolume,当用户输入1时,将其映射为id。当用户输入0和1以外的内容时,可以将其转换为默认排序方式。

本期JSRC 安全小课堂到此结束。更多内容请期待下期安全小课堂。如果还有你希望出现在安全小课堂内容暂时未出现,也欢迎留言告诉我们。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G0KEKX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券