首页 > 数据库 >016.Mybatis预防SQL注入攻击

016.Mybatis预防SQL注入攻击

时间:2022-11-09 00:55:55浏览次数:42  
标签:goods title param session 016 SQL Mybatis order select

 

1.Sql注入是什么

 

 2.俩种传值方式

 

 3.相关语句(高级查询必须要进行sql拼接时用$,如${order},但绝对不能让用户从前台输入)

 <select id="selectByTitle" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Goods">
        select *
        from t_goods
        where title = #{title} ${order}
    </select>
  /**
     * 预防SQL注入
     *
     * @throws Exception
     */
    @Test
    public void testSelectByTitle() throws Exception
    {
        SqlSession session = null;
        try
        {
            session = MyBatisUtils.openSession();
            Map param = new HashMap();
            /*
                ${}原文传值
                select * from t_goods
                where title = '' or 1 =1 or title = '【德国】爱他美婴幼儿配方奶粉1段800g*2罐 铂金版'
            */
            /*
               #{}预编译
               select * from t_goods
                where title = "'' or 1 =1 or title = '【德国】爱他美婴幼儿配方奶粉1段800g*2罐 铂金版'"
            */

            param.put("title", "'' or 1=1 or title='斯利安 孕妈专用 洗发水 氨基酸表面活性剂 舒缓头皮 滋养发根 让你的秀发会喝水 品质孕妈'");
            param.put("order", " order by title desc");
            List<Goods> list = session.selectList("goods.selectByTitle", param);
            for (Goods g : list)
            {
                System.out.println(g.getTitle() + ":" + g.getCurrentPrice());
            }
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            MyBatisUtils.closeSession(session);
        }
    }

 

 

标签:goods,title,param,session,016,SQL,Mybatis,order,select
From: https://www.cnblogs.com/LLL0617/p/16871826.html

相关文章

  • 大小写字符转换【Sql Server和C#两种写法】
    案例:VarStr=”abdCnd“如何将Str=”ABDCND“?SqlServer写法:upper(Str)  ==> Lower(Str)   C#写法:Str.toUpper() ==>Str.toLower() ......
  • Mysql列的类型(数值类型、小数类型)
    #一、演示整型中的tinyint,有符号范围在-128-127,无符号范围在0-255 #if指定unsigned,则tinyint表示无符号:此时范围在0-255;CREATETABLEt1(id TINYINT);CREATE......
  • MySql - 基础学习 - 联表查询
    一.联表查询--联表查询/*思路1.需求分析,分析查询的字段来自于那张表(连接查询)2.确定使用那种查询方式3.确定交叉点(两张表中什么数据是相同的)4.判断条件`student`......
  • 【MySQL】测试题01
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。......
  • SqlServer高性能批量插入
    从内存占用大小、执行时间长短、实现复杂程度来衡量几种方法1.一次性加载数据到内存、再一条条插入2.使用yield逐批次加载到内存,数据库中为表添加【用户自定义表类型】(又......
  • MySQL
    1.简介MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内......
  • 切记:永远不要在MySQL中使用UTF-8
    MySQL使用UTF-8issue 问题描述:最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect value:‘\xF0\x......
  • docker 快速部署 elasticseach kafa mysql redis pgsql etcd
    version:"3"services:pgsql:container_name:pgsqlimage:postgres:latestprivileged:trueenvironment:POSTGRES_PASSWORD:password......
  • 一些有用的sql
    删除重复行,按照某列DELETEs1FROMfilter_md5ASs1INNERJOINfilter_md5ASs2WHEREs1.fm_id<s2.fm_idANDs1.md5=s2.md5;给一个表添加unique......
  • 数据库编程——Oracle MySQL SQL
    在学习数据库编程总结了笔记,并分享出来。09-数据库编程day03(oraclemysqlsql)  一、学习目标1.oracle创建和管理表2.oracle的视图,索引,同义词,序列(了解作用和创建方式......