1、 什么是SQL注入漏洞

SQL注入是指应用程序直接将用户输入的内容拼接到SQL语句中。由于用户输入的内容也是SQL中的一部分,攻击者可以注入自己定义的语句该院原SQL的逻辑。通过控制SQL语句,达到提权(获取数据库服务器系统权限)或拖库(查询数据库中任何数据)的目的。

2、 SQL注入的类型

        布尔型注入:盲注的一种,指的是利⽤SQL语句“逻辑与(and)”操作,判断and两边的条件是否成⽴,SQL语句带⼊输⼊查询后判断返回内容(通常返回值仅有⾮空和空两种状态),类似布尔型的true和false的两种状态。

        报错型注入:没有正常的输出位,利用数据库的某些函数,在执行SQL时产生错误并输出显示。

联合查询注入:通过联合查询合并多个结果集,获取需要的数据。

        多语句查询注入:利用多语句查询函数,一次性执行多条语句

        基于时间延时注入:盲注的⼀种。通过构造延时注⼊语句后,浏览器页⾯的响应时间来判断正确的数据

3、 SQL注入的危害

在特定的条件下,攻击者可以查询数据库中任何数据,同时可以获取数据库服务器系统权限,甚至基于数据库服务器作为跳板进入内网。

4、 SQL注入漏洞防守方法

在了解了常见的注入类型及手段之后,需要针对不同的应用程序及场景进行漏洞防护。防护本质:预编译用户输入数据组成的SQL,使其无法执行;无法预编译的输入,代码层转换输入内容为特定数据;SQL异常信息禁止输出至页面。

以Java程序中MyBatis为例,针对SQL注入漏洞需要注意的事项。

1、普通条件查询语句,利用sql的预编译机制。<select id="selectTable">SELECT field_name FROM table_name WHERE 1 = 1<if test="condition != null">AND field_name = #{condtion}</if>
</select>2、like条件查询语句,利用sql的预编译机制。<select id="selectTable">SELECT field_name FROM table_name WHERE 1 = 1<if test="condition != null">AND field_name like CONCAT('%', #{condition}, '%')</if>
</select>3、in条件查询语句,利用sql的预编译机制。<select id="selectTable">SELECT field_name FROM table_name WHERE 1 = 1<if test="conditionArray != null">field_name in<foreach collection="conditionArray" item="item" open="(" close=")" separator=",">#{item}</foreach></if>
</select>4、order by语句。由于Mybatis中order by语句只能拼接,所以需要在代码层控制传入参数,禁止直接将用户数据数据传入SQL语句中。<select id="selectTable">SELECT field_name FROM table_name WHERE 1 = 1<if test="sortField != null and sortBy != null">ORDER BY ${sortField} ${sortBy}</if>
</select>

SQL注入漏洞攻守之道相关推荐

  1. SQL注入漏洞攻防必杀技

    SQL注入是常见的利用程序漏洞进行攻击的方法,是很多入门级"黑客"喜欢采用的攻击方式,近来网上 对它的讨论很热烈,所以我在本期专题中为读者揭示SQL攻击的主要原理以及如何防范这种攻 ...

  2. [转]SQL注入漏洞攻防必杀技

    SQL注入是常见的利用程序漏洞进行攻击的方法,是很多入门级"黑客"喜欢采用的攻击方式,近来网上 对它的讨论很热烈,所以我在本期专题中为读者揭示SQL攻击的主要原理以及如何防范这种攻 ...

  3. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  4. SQL注入漏洞的检测与防范技术

    提 要   本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词  SQL注入漏洞 检测 防范技术 引 言    近几年来随着计算机网络和WEB技术的飞速 ...

  5. Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)

    漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697mod_accounting是Apache 1.3.x上的流 ...

  6. guestbook.php注入,TinyGuestBook 'sign.php'多个SQL注入漏洞

    发布日期:2012-09-23 更新日期:2012-10-04 受影响系统: TinyGuestBook TinyGuestBook 描述: ----------------------------- ...

  7. thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...

  8. Backtrack5 SQL注入漏洞探测

    SQLMAP,它是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL. SQLMAP ...

  9. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

最新文章

  1. [USACO16JAN]子共七Subsequences Summing to Sevens
  2. java的CyclicBarrier使用
  3. centos6系列版本防火墙图形化设置
  4. 安装完成ubuntu系统后的基本的相关配置---Linux总结笔记
  5. 如何使用Java泛型映射不同的值类型
  6. 智能车复工日记【6】:有bug的模糊PID记录
  7. fastadmin自定义按钮不是ajax,Fastadmin 自定义按钮实现审核功能
  8. mysql 二进制 存储格式化_解析MYSQL BINLOG 二进制格式(2)--FORMAT_DESCRIPTION_EVENT
  9. redis cluster 分布式锁_关于分布式锁原理的一些学习与思考redis分布式锁,zookeeper分布式锁...
  10. AD7606实际采样率输出数据量偏小
  11. LINUX用C检查文件的大小的代码
  12. vijos1214——伤心的AsukaNoKaze
  13. 最新阿尼亚二次元动漫鼠标指针安装教程+素材打包
  14. 编程游戏开发:如何开发制作一款游戏?你需要做哪些准备?
  15. 南阳oj入门题-奋斗的小蜗牛
  16. java如何运行jsp文件_jsp文件怎么打开(java
  17. asp.net打开对话框选择文件路径
  18. 电脑无规律无响应,鼠标能动但是点击无反应一直在转圈。
  19. Docker学习笔记八:删除镜像构建私有Registry
  20. nvm介绍、nvm下载、安装与使用

热门文章

  1. vue+elementui网上线上教学平台python+java
  2. H5获取链接中的参数
  3. mac 类似matlab,10款Mac上科研人员必备的科研工具推荐和下载 | 玩转苹果
  4. [李景山php]每天TP5-20170203|thinkphp5-Request.php-6
  5. 数据结构-列出连通集(图的操作)
  6. 爬虫做js逆向分析的思路
  7. 如何理解关联法则中的三个判断准则
  8. dct变换可以用什么方法代替_「dct变换」DCT变换自学笔记 - seo实验室
  9. 【华人学者风采】毛景文 中国地质科学院
  10. SQL语句 字段类型转换—文本型转换成数值型