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

012.预防SQL注入攻击

时间:2022-12-05 00:04:41浏览次数:40  
标签:goods title param 012 session SQL 预防 select

1.什么是SQL注入攻击

 

 2.Mybatis的俩种传值方式

 

 3.Mybatis的俩种传值方式的使用场景

3.1 goods.xml

    <select id="selectByTitle" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Goods">
        select * from t_goods where title = #{title}
            ${order}
    </select>

3.2 测试类

  /**
     * 预防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,012,session,SQL,预防,select
From: https://www.cnblogs.com/LLL0617/p/16951239.html

相关文章

  • 忘记mysql本地root的登录密码该怎么办??
    解决过程:1、编辑/etc/my.cnf在[mysqld]配置部分添加一行skip-grant-tables2、保存后重启mysql[root@localhostetc]#servicemysqldrestartShuttingdownMySQL.......
  • MySQL MHA
    一、MHA概述MHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点故障的问题。MySQL故障切换过程中,MHA能做......
  • 在C#中使用Irony实现SQL语句的解析
    https://sunnycoding.cn/2019/07/11/sql-parser-with-irony-in-csharp/ 本文结构定义语法语法测试语句解析获得解析结果总结在上一篇博文中,我介绍了LOGO语言的C......
  • Mysql 权限操作
    --使用mysql库,查询host和用户名usemysql;selecthost,userFROMuser--创建一个用户(这样创建默认是%,表示任何ip都可以连接)createuser'zhang3(这里填写用户名)'IDEN......
  • MySQL 存储过程浅谈
    一、存储过程定义​存储过程(StoredProcedure):一组为了完成特定功能的SQL语句集,存储在数据库中,经过一次编译后不需要再次编译。二、存储过程特点1、可以完成复杂的判断和......
  • MySQL 高级SQL语句
    一、高级SQL语句(进阶查询)先准备2个表一个location表:  一个store_info表:  1.1selectselect,显示表格中一个或数个字段的所有数据记录。    1.2dis......
  • Mysql主从复制,读写分离
    一、Mysql主从复制概述在企业中,业务数据量通常都比较大,单台Mysql在安全性,高可用性和高并发方面都无法满足实际需求,因此可以通过主从复制的方式来同步数据,再通过读写分离来提......
  • MySQL数据库 事务
    一、事务的概念事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么......
  • MySQL存储引擎
    1.MyISAM底层存储(非聚集索引方式)与InnoDB底层存储(聚集索引方式)1.1MyISAM底层存储(非聚集索引方式)Myisam创建表后生成的文件有三个:frm:创建表的语句MYD:表里面的数据文......
  • MySQL 日志管理
    一日志分类日志种类 作用错误日志 记录MySQL服务器启动、关闭及运行错误等信息事务日志 1、redolog重做日志2、undolog回滚日志查询日志 记录所有的sql慢查询日志 记......