问个 LIKE 语句sql注入的处理

问题描述

场景是做个对数据库A表字段CONTENT的模糊查询。语句类似: PreparedStatement stmt = conn.prepareStatement("select * from A where CONTENT like ? "); String searchString = "aa";//匹配内容 stmt.setString(1,"%" + searchString + "%");这个语句匹配包含searchString 为"aa"内容的数据,但如果传入的不是 "aa",而含特殊的符号如 "%",就可查询出来所有的数据。一个解决的办法是将语句改为:"select * from A where CONTENT like ? ESCAPE ''"然后再对searchString进行一下预处理(在"%:","_","" 字符前附加""). 感觉这个方法还是比较拖沓,而且本质上还是需要程序去转义sql,而不是依赖数据库本身来处理. 不知各位有什么比较好的处理方法?

解决方案

数据库一般不提供转义功能,只有在由开发语言处理!GOOGLE搜索都把那些特殊字符过滤了!
解决方案二:
一般是在前台做check,把%等符号作为禁止输入的字符

时间: 2025-01-27 22:12:03

问个 LIKE 语句sql注入的处理的相关文章

防SQL注入:生成参数化的通用分页查询语句

前些时间看了玉开兄的"如此高效通用的分页存储过程是带有sql注入漏洞的"这篇文章,才突然想起 某个项目也是使用了累似的通用分页存储过程.使用这种通用的存储过程进行分页查询,想要防SQL注入 ,只能对输入的参数进行过滤,例如将一个单引号"'"转换成两个单引号"''",但这种做法是不安全 的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终 的解决方案.但问题就出在这种通用分页存储过程是在存储过程内部进行SQ

多条件查询拼接sql语句如何防止sql注入

问题描述 假如有四个条件可以任意输入1到4个条件取交集求解 解决方案 解决方案二:引用楼主abc12346579的回复: 假如有四个条件可以任意输入1到4个条件取交集求解 你的"任意输入条件"是什么意思?如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么"注入"方式干什么?直接干就行了.解决方案三:你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论"如何防止盗窃"就没有意义了.解决方案四:在

新浪爱问存在SQL注入漏洞

摘要: 瑞星指新浪7000万密码泄漏(腾讯科技配图) 1月5日消息,国内安全机构瑞星今日发布安全预警,指出席卷互联网的泄密门出现新紧张,新浪爱问存在SQL注入漏洞,大约7000万明文存储的密码 瑞星指新浪7000万密码泄漏(腾讯科技配图) 1月5日消息,国内安全机构瑞星今日发布安全预警,指出席卷互联网的"泄密门"出现新紧张,新浪爱问存在SQL注入漏洞,大约7000万明文存储的密码已外泄. 有安全黑客对著名魔术师刘谦微博进行尝试性攻击,取得成功,刘谦得知此事后在微博上连呼"太恐

关于SQL注入的几类错误和产生的原理

对于注入而言,错误提示是极其重要.所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要.本问讨论下关于几类错误和他产生的原理,希望对读者有所帮助. 错误提示主要有逻辑错误和语法错误以及脚本运行错误三类. 一:逻辑错误 简单的例子是1=1 1=2这两个,1=1与1=2页面不同的原理是什么?以$sql = "select * from news where id=$_GET[id]"为例. select * from news where id=

EasyASP v2.2新功能介绍(1):Easp是如何实现防sql注入的

EasyASP终于到v2.2了,目前还在完善手册,群里有很多人问如何使用的问题 ,所以打算在写手册的同时写一些新功能的介绍,方便使用Easp 的童鞋们快速 进入状态.说实话,看到这么多人还在写ASP.还在支持Easp,觉得蛮难得的, 所以也一直没有丢下Easp的开发,还是希望Easp能给最后的ASPer们一点微薄的 帮助. EasyASP v2.2的改动比较大,放弃了不少原来我觉得不好用的方法,当然, 更多的是加入了不少我觉得会用得很哈屁的新功能.这是这个系列的第一篇文章 ,准备讲讲EasyAS

关于SQL注入的几类错误和产生

对于注入而言,错误提示是极其重要.所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要.本问讨论下关于几类错误和他产生的原理,希望对读者有所帮助. 错误提示主要有逻辑错误和语法错误以及脚本运行错误三类. 一:逻辑错误 简单的例子是1=1 1=2这两个,1=1与1=2页面不同的原理是什么?以$sql = "select * from news where id=$_GET[id]"为例. select * from news where id=

最实用有效的PHP中防止SQL注入

 问题描述: 如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子:   代码如下   $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('" . $unsafe_variable . "')"); 因为用户的输入可能是这样的:   代码如下   value'); DRO

预防SQL注入攻击之我见

SQL注入攻击的本质:让客户端传递过去的字符串变成SQL语句,而且能够被执行. 每个程序员都必须肩负起防止SQL注入攻击的责任. 说起防止SQL注入攻击,感觉很郁闷,这么多年了大家一直在讨论,也一直在争论,可是到了现在似乎还是没有定论.当不知道注入原理的时候会觉得很神奇,怎么就被注入了呢?会觉得很难预防.但是当知道了注入原理之后预防不就是很简单的事情了吗? 第一次听说SQL注入攻击的时候还是在2004年(好像得知的比较晚),那是还是在写asp呢.在一次写代码的时候,有同事问我,你的这段代码防注入

PHP中该怎样防止SQL注入?

原文:PHP中该怎样防止SQL注入? 因为用户的输入可能是这样的: ? 1 value'); DROP TABLE table;-- 那么SQL查询将变成如下: ? 1 INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--') 应该采取哪些有效的方法来防止SQL注入? 最佳回答(来自Theo): 使用预处理语句和参数化查询.预处理语句和参数分别发送到数据库服务器进行解析,参数将会被当作普通字符处理.这种方式使得攻击