zoukankan      html  css  js  c++  java
  • mybatis如何防止sql注入(2)

    Mybatis框架下SQL注入漏洞修复建议

    1. 模糊查询like SQL注入修复建议
    按照新闻标题对新闻进行模糊查询,可将SQL查询语句设计如下:
    select * from news where tile like concat(‘%’,#{title}, ‘%’),
    采用预编译机制避免了SQL语句拼接的问题从根源上防止了SQL注入漏洞的产生

    2. in之后的参数SQL注入修复建议
    在对新闻进行同条件多值查询的时候,可使用Mybatis自带循环指令解决SQL语句动态拼接的问题:
    select * from news where id in
    <foreach collection="ids" item="item" open="("separator="," close=")">

    #{item}

    </foreach>

    3. order by SQL注入修复建议--在Java层面做映射
    预编译机制只能处理查询参数,其他地方还需要研发人员根据具体情况来解决。

    如前面提到的排序情景:

    Select * from news where title =‘京东’ order by #{time} asc,

    这里time不是查询参数,无法使用预编译机制,只能这样拼接:

    Select * from news where title =‘京东’ order by ${time} asc 。
    针对这种情况研发人员可以在java层面做映射来进行解决。

    如当存在发布时间time和点击量click两种排序选择时,我们可以限制用户只能输入1和2。

    当用户输入1时,我们在代码层面将其映射为time,当用户输入2时,将其映射为click。

    而当用户输入1和2之外的其他内容时,我们可以将其转换为默认排序选择time(或者click)。

  • 相关阅读:
    C#输出JS代码封装类Alart
    我的汇编学习之路(2)win8(64位)下安装debug
    .NET使用一般处理程序生成验证码
    ?运算符(null合并运算符)和三木运算符
    讲解:小菜鸟自制的.NET实体类生成器
    我的汇编学习之路(1)进制转换
    未来
    callee,caller区别
    string::size_type
    ubuntu 12.04 LTS u盘安装
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6760061.html
Copyright © 2011-2022 走看看