模糊查询LIKE语句的SQL注入预防
来源:互联网 发布:大数据导论 pdf 编辑:程序博客网 时间:2024/06/06 08:26
一、在iBatis或者myBatis模糊查询的LIKE语句避免采用如下写法,否则会导致SQL注入;
<select id="INSTITUTIONS-GET-PARAMS" resultMap="INSTITUTIONSDO-MAP" parameterClass="java.util.Map"><![CDATA[SELECT /*INSTITUTIONS-CLASSIFICATION-GET-ALL-COUNT */ i.id,i.institution_name,i.institution_short_name,i.create_time,i.agency_headquarters,i.registration_site,i.website_url,i.brief_introduction,i.logo_url,i.hot FROM ins i ]]><isNotEmpty property="categoryCode">LEFT JOIN ins_industry ii ON i.id = ii.institutionId LEFT JOIN ind_type it ON it.id = ii.typeId </isNotEmpty>where 1=1 <dynamic><isNotEmpty property="categoryCode" prepend=" AND "><![CDATA[it.category_code = #categoryCode# ]]></isNotEmpty><isNotEmpty property="institutionName" prepend=" AND ">i.institution_short_name LIKE '%$institutionName$%' </isNotEmpty>ORDER BY i.hot ASC <isNotEmpty property="start"> LIMIT #start#, <isNotEmpty property="size"> #size# </isNotEmpty> </isNotEmpty></dynamic> </select>
如上SQL语句,如果用户输入:%' AND 2498=2498 AND '%'=',会构成如下SQL,精简后如下,是能正确返回记录的,即存在SQL注入:
SELECT i.id,i.institution_name,i.institution_short_name,i.create_time,i.agency_headquarters,i.registration_site,i.website_url,i.brief_introduction,i.logo_url,i.hot FROM ins i LEFT JOIN ins_industry ii ON i.id = ii.institutionId LEFT JOIN ind_type it ON it.id = ii.typeId where 1=1 AND i.institution_short_name LIKE '%%' AND 2498=2498 AND '%'='%' ORDER BY i.hot ASC LIMIT 0, 10
二、解决办法:
1、尽量避免采用$的方式,$会导致SQL注入,LIKE '%$institutionName$%' 和 LIKE concat('%',$institutionName$,'%') 都会导致SQL注入;
2、尽量采用#的方式,#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号;更详细的可以查看$和#的区别;
3、对于例子中的模糊查询,可以用#结合concat函数,即修改为LIKE concat('%',#institutionName#,'%') ;
4、以上只是编码LIKE语句的SQL注入防范,实际中需要对用户输入进行过滤处理;
0 0
- 模糊查询LIKE语句的SQL注入预防
- 模糊查询LIKE语句的SQL注入预防
- sql语句模糊查询like的用法
- SQL模糊查询语句(like)
- ibatis模糊查询的like '%$name$%'的sql注入避免
- mybatis like %% 模糊查询防sql 注入
- 写sql语句,模糊查询:instr ----like
- SQL中LIKE模糊查询LIKE关键字匹配语句
- SQL like 模糊查询
- SQL like 模糊查询
- SQL like 模糊查询
- SQL like 模糊查询
- SQL like模糊查询
- SQL like 模糊查询
- SQL like 模糊查询
- SQL like 模糊查询
- SQL like模糊查询
- hibernate 防sql注入模糊查询(like).
- 优化myshool 第六章上机练习
- iOS开发技巧之:截取字符串中两个指定字符串中间的字符串
- 回调函数原理与使用案例
- 虚拟机使用ubuntu运行VS code出现界面黑屏时的解决办法
- Java Integer比较中的那些坑
- 模糊查询LIKE语句的SQL注入预防
- Hibernate_映射文件详解
- 用JS获取地址栏参数的方法
- Http协议与TCP协议易混淆点(一)
- HDU 5423 Rikka with Tree
- Oracle12C Database Vault配置及使用(一)
- 日志分割logrotate
- dedecms织梦模板中currentstyle标签失效不能使用
- python scrapy xpath常用语法