广告
返回顶部
首页 > 资讯 > 数据库 >模糊查询 防止 sql注入
  • 976
分享到

模糊查询 防止 sql注入

2024-04-02 19:04:59 976人浏览 安东尼
摘要

Mysql  mybatis 环境:1>. 处理sql特殊字符 {"*","%","_"} --> 替换为 "/*","/%","/_"2>.   sql 中处理,定义

Mysql  mybatis 环境:

1>. 处理sql特殊字符 {"*","%","_"} --> 替换为 "/*","/%","/_"

2>.   sql 中处理,定义‘/’ 为转义字符  


public abstract class BaseEntity extends PrimaryKeyObject<Long> {

private static final long serialVersionUID = 1L;

@Transient // 用于注释pojo对象中的属性,被注释的属性将成为短暂的,不会持久化。

protected Boolean escapeChar;  // 是否包含转义字符

protected String keyWord;   // 模糊查询关键字


public String geTKEyword() {

return keyword == null ? null : keyword.trim();

}


public void setKeyword(String keyword) {

this.keyword = keyword == null ? null : keyword.trim();

}


public Boolean getEscapeChar() {

this.getNewKeyword();

return escapeChar;

}


public void setEscapeChar(Boolean escapeChar) {

this.escapeChar = escapeChar;

}


// 处理sql特殊字符 {"*","%","_"} --> 替换为 "/*","/%","/_"

private void getNewKeyword() {

if (escapeChar == null) {

escapeChar = false;

}

if (StringUtils.isNotEmpty(keyword) && !escapeChar) {

Pattern p1 = Pattern.compile("\\*|%|_");

Matcher m1 = p1.matcher(keyword);


StringBuffer buf = new StringBuffer();

while (m1.find()) {

m1.appendReplacement(buf, "/" + m1.group());

}

m1.appendTail(buf);

String newkeyword = buf.toString();


if (!keyword.equals(newkeyword)) {

this.setEscapeChar(true);

this.setKeyword(newkeyword);

}

}

}

}




<!-- 模糊查询 -->

<if test="keyword != null">

<choose>

<when test=true >

and (

name like CONCAT("%",#{keyword},"%") escape '/'

or 

uname like CONCAT("%",#{keyword},"%") escape '/'

)

</when>

<when test=false>

</when>

</choose>

</if>






您可能感兴趣的文档:

--结束END--

本文标题: 模糊查询 防止 sql注入

本文链接: https://www.lsjlt.com/news/43648.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 模糊查询 防止 sql注入
    mysql  mybatis 环境:1>. 处理sql特殊字符 {"*","%","_"} --> 替换为 "/*","/%","/_"2>.   sql 中处理,定义...
    99+
    2022-10-18
  • mybatis模糊查询如何防止sql注入
    mybatis模糊查询防止sql注入的方法:bind + #{}模糊查询可以防止SQL注入,bind元素可以从OGNL表达式中创建一个变量并将其绑定到上下文,例如:<select id="selectBl...
    99+
    2022-10-23
  • 参数化sql查询如何防止sql注入
    使用参数化查询语句进行查询的示例:string Account =Request.Form["Account"]; string sql = "select id,Name,Account from User where...
    99+
    2022-10-12
  • sql查询之模糊查询
    like 这里可以参照一下菜鸟教程、mysql like一般用于字符串查询%代表半匹配查询 SELECT * FROM studentWHERE `name` = "孙悟空";SELE...
    99+
    2023-09-03
    sql 数据库 mysql
  • PHP的预处理查询如何防止SQL注入
    这篇文章主要讲解了“PHP的预处理查询如何防止SQL注入”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP的预处理查询如何防止SQL注入”吧!PHP的预处理查询是如何防止SQL注入的?目前...
    99+
    2023-07-05
  • 模糊查询如何解决sql语句注入问题
    模糊查询解决sql语句注入问题的示例:使用mysql中concat函数可以解决sql注入又能够在位置文件中写%,代码如下:<select id = "selectByName"...
    99+
    2022-10-23
  • 防止SQL注入
    SQL注入是指攻击者通过在输入的数据中注入恶意的SQL代码,以获取非法访问、窃取敏感信息等操作。以下是一些防止SQL注入的方法: 使用参数化查询:使用参数化查询可以防止SQL注入攻击,参数化查询是指在执行查询时,将参数与查询语句分离,使得...
    99+
    2023-09-10
    sql 数据库 java mysql
  • 为什么参数化查询可以防止sql注入
    参数化查询可以防止sql注入原因:参数化查询可以对参数进行过滤,还能够重用执行计划,若执行计划被重用的话,SQL所要表达的语义是不会变化的,因此参数化查询可以防止SQL注入。...
    99+
    2022-10-25
  • SQL参数化查询能防止SQL注入的原因是什么
    这篇文章主要介绍了SQL参数化查询能防止SQL注入的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL参数化查询能防止SQL注入的原因是什么文章都会有所收获,下面我...
    99+
    2023-03-20
    sql
  • SQL模糊查询的用法
    这篇文章主要介绍“SQL模糊查询的用法”,在日常操作中,相信很多人在SQL模糊查询的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL模糊查询的用法”的疑惑有所帮助!接...
    99+
    2022-10-18
  • 怎么防止SQL注入
    这篇文章主要介绍了怎么防止SQL注入,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SQL注入即是指web应用程序对用户输入数据的合法性没有判...
    99+
    2022-10-18
  • Mybatis-plus sql注入及防止sql注入详解
    目录一、SQL注入是什么?二、mybatis是如何做到防止sql注入的1. #{} 和 ${} 两者的区别2.PreparedStatement和Statement的区别3.什么是预...
    99+
    2022-11-13
    mybatis-plus sql注入 mybatis-plus防止sql注入
  • 一文解析PHP的预处理查询怎么防止SQL注入
    本篇文章给大家带来了关于php的相关知识,其中主要跟大家聊一聊什么是预处理语句?PHP的预处理查询是如何防止SQL注入的?感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。PHP的预处理查询是如何防止SQL注入的?目前最有效的防止 sql ...
    99+
    2023-05-14
    SQL注入 php
  • golang怎么防止sql注入
    在Go语言中,可以使用参数化查询或预编译语句来防止SQL注入。1. 参数化查询:使用占位符来代替实际的参数值,然后将参数值作为参数传...
    99+
    2023-09-17
    golang sql
  • beego如何防止sql注入
    beego框架里的Raw函数使用了占位符,并且beego是经过mysql的数据库驱动封装打包后再传到mysql中的,这个过程中已经实现了防止SQL注入,因此不再存在SQL注入的危险。...
    99+
    2022-10-08
  • ajax如何防止sql注入
    ajax防止sql注入的方法:将以下代码放在公用的js里面即可,如:$.ajaxSetup({contentType: "application/x-www-form-urlencoded;charset=utf-8",beforeSend...
    99+
    2022-10-06
  • hql如何防止sql注入
    hql防止sql注入的方法:在HQL语句中定义命名参数要用”:”开头,例如:Query query=session.createQuery(“from User user where user.name=:customername...
    99+
    2022-10-17
  • ibatis怎么防止sql注入
    ibatis防止sql注入的方法:使用#写法采用预编译方式,将转义交给数据库,则不会出现注入问题,例如://mysql环境select * from test where school_name like conca&#...
    99+
    2022-10-10
  • like如何防止sql注入
    like防止sql注入的示例:在不同数据库下的用法不同,例如://mysql环境select * from test where school_name like concat('%',${name},'%')...
    99+
    2022-10-24
  • nodejs如何防止sql注入
    nodejs防止sql注入的方法:使用escape()对传入参数进行编码,例如:var userId = 1, name = 'test';var query = connection.query('SELECT * FROM us...
    99+
    2022-10-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作