zoukankan      html  css  js  c++  java
  • SSM框架的sql中参数注入(#和$的区别)

    <select id="findUsersByUserName2" resultType="java.util.Map" parameterType="Params">
    2 SELECT
    3 id as uid,
    4 username as uname,
    5 password as pwd,
    6 account as act,
    7 telephone,
    8 idcard,
    9 create_time as createTime,
    10 is_delete as isDelete,
    11 male,
    12 birthday,
    13 email,
    14 address,
    15 update_time as updateTime,
    16 teacher_id as teacherId,
    17 subject_id as subjectId,
    18 age,
    19 status,
    20 type
    21 FROM
    22 tz_user
    23 WHERE
    24 username LIKE '%${username}%'
    25 AND `password` = #{password}
    26 ORDER BY ${order}
    27 </select>
    复制代码
    ORDER BY ${order} 和模糊查询 username LIKE '%${username}%' 是用$符号,其他的大多是用 #{} 来获取传递的参数。

    ORDER BY 还可以用#{}符号传递参数。

    #{} 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{userId},如果传入的值是111, 那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".

    ${} 将传入的数据直接显示生成在sql中,是什么就是什么,没有加双引号:select * from table1 where id=${id} 若 id = 4,则就是:select * from table1 where id = 4;

    最好是能用 #{} 就用它,因为它可以防止sql注入,且是预编译的,在需要原样输出时才使用 ${}

    记住一点:单引号里面的用 ${} 符号,ORDER BY 可以用${}或者#{}符号,用 #{} 的不能加单引号,因为默认加了引号

  • 相关阅读:
    反弹连接的shellcode
    md5反查网站
    一种新的Heap区溢出技术分析
    ckeditor漏洞
    Fedora Core 4下的一些小问题
    MYCCL特征码定位器详细使用之内存定位
    dedecms5.7最新注入和上传漏洞
    脱壳方法汇总
    一种小堆(heap)溢出的另类利用方法
    对付非法操作! 系统做了如下记录!
  • 原文地址:https://www.cnblogs.com/konglxblog/p/10011959.html
Copyright © 2011-2022 走看看