• MyBatis如何防止SQL注入


    SQL注入

    什么是SQL注入呢?首先SQL注入是一种攻击手段,一种使用构造恶意的SQL语句,欺骗服务器执行SQL命令,让后台的数据库去解析,从而达到入侵目标网络,获取敏感信息的攻击手段。

    MyBatis如何防止SQL注入

    SQL中#和$区别

    # $
    相当于对数据加上双引号 相当于直接显示数据
    很大程度上防止SQL注入 无法防止SQL注入
    #{xxx},使用的是PreparedStatement,会有类型转换,比较安全 ${xxx},使用字符串拼接,容易SQL注入

     简单的说就是#{}是经过预编译的,是安全的,${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。

    例子

     1 <select id="selectBackGoodsDetail" resultType="java.util.Map">
     2     SELECT sum(a.item_num) backGoodsNum,a.item_price backGoodsPrice,
     3     sum(a.item_num * a.item_price) backGoodsSumPrice,
     4     b.barcode,b.name itemName,b.weight,c.name itemCategoryName
     5     FROM back_goods_detail a
     6     LEFT JOIN item b ON a.item_id=b.id
     7     LEFT JOIN item_category c ON b.item_category_id =c.id
     8     <where>
     9         <if test="backGoodsId!=null">
    10             a.back_goods_id = #{backGoodsId}
    11         </if>
    12         <if test="itemCategoryId!=null">
    13             AND b.item_category_id = #{itemCategoryId}
    14         </if>
    15         <if test="searchKey!= null">
    16             AND (b.sequence LIKE CONCAT('%', #{searchKey}, '%')
    17             OR b.name LIKE CONCAT('%', #{searchKey}, '%')
    18             OR b.barcode LIKE CONCAT('%',#{searchKey},'%'))
    19         </if>
    20     </where>
    21     GROUP BY a.item_id
    22     LIMIT #{pageStart},#{pageNum}
    23 </select>
  • 相关阅读:
    Oracle数据库的左连接和右连接(+)
    Web文件上传模块 Plupload
    增加反向链接的35个技巧
    google map api 与jquery结合使用(1)控件,监听器[转帖]
    教你在windows 7/xp 下安装使用mencoder
    Oracle 全文索引
    提高关键词排名的28个SEO技巧
    二叉树遍历及C语言实现
    小额担保业务管理系统详细设计介绍
    C#与数据结构二叉树的遍历
  • 原文地址:https://www.cnblogs.com/PreachChen/p/9103278.html
Copyright © 2020-2023  润新知