ITPub博客

首页 > 数据库 > 数据库开发技术 > SQL中,有效防止like的SQL注入,使用预编译SQL(?)写法

SQL中,有效防止like的SQL注入,使用预编译SQL(?)写法

原创 数据库开发技术 作者:deaming317 时间:2020-03-25 20:34:30 0 删除 编辑






今天在写SQL语句的模糊查询时,遇到了防止like的SQL注入问题,对此进行查询了一番,注入原理如下:

1.SQL注入

sql就是数据库,像sql server,mysql,db2,postgresql,oracle等都是比较常见的数据库,可以通过构造数据库语句,也就是sql语句,进行增删该查操作。
SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。


2.产生SQL注入原因
动态网站是通过脚本语言去调用数据库从而完成整个网站的运作,,对网站进行操作时,只要是涉及数据库的操作都会带入数据库进行查询,若没有任何限制,则可以输入任意的查询语句带入数据库查询。
sql注入就是限制用户输入不严引起的,也就是过滤不严。


3.SQL注入分类
从参数类型可以分为:×××注入和字符型注入
从注入类型可以分为以下几类:
(1)基于错误的有显示位的注入
(2)基于错误的有数据库报错信息的注入
(3)基于错误的没有数据库报错信息的盲注
(4)基础时间的盲注


4.SQL注入经典流程
(1)判断Web系统使用的脚本语言,发现注入点,并确定是否存在SQL注入漏洞
(2)判断Web系统的数据库类型
(3)判断数据库中表及相应字段的结构
(4)构造注入语句,得到表中数据内容
(5)查找网站管理员后台,用得到的管理员账号和密码登录
(6)结合其他漏洞,想办法上传一个Webshell
(7)进一步提权,得到服务器的系统权限


5.判断SQL注入方法
(1)最常用的方式:直接在url后面输入and 1=1页面返回正常,and 1=2页面返回错误,或者是直接加单引号报错,则有可能存在sql注入;
(2)也可采用or或者xor来判断;
(3)在没有错误回显的情况下可以采用and sleep(1)来判断;
(4)也可采用数学计算,例如 id=2和id=3-1返回测界面一样,则有可能存在sql注入。
总体来说,输入的语句影响了数据库的查询结果,那么就极有可能存在sql注入。


通过查询资料,对常用的数据库的具体防止方法如下:


Mysql数据库

sql = " and indexNum like concat('%',?,'%') "


Oracle

sql = " like '%' || ? || '%' "


SQL Server

sql = " like '%' + ? + '%' "


感觉不错的话,麻烦动动小手关注一下小编啦

更多精彩请点击

1.删除SQL表数据时存在约束的解决方法

2.这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!

3.GIT常用命令清单

4.如何快速的创建一个 SpringBoot 项目?

原文作者:程序员Style;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-03-04

  • 博文量
    119
  • 访问量
    52225