• 好久没考虑过的 sql 注入


    很多年没考虑 sql 注入了,毕业以后 使用mybatis #{ 参数的 语法 },这个 语法已经 做了防止 sql 注入的处理 。 看到同事写的 ${ 参数 },突然 想到这个问题 。  

    下面聊聊 sql注入。

    总结

       ${ 参数 } 里面带有的 任何参数 都会被直接拼接到sql 里面 。

       #{ 参数 } 是 做了预编译。 后面 只能传参数。

    注入的3 种方式:

    原始 sql :     select * from id  = '${ id }'

      1 or 方式      select * from id  = ' 1 or 1=1 ' ,这样可以查询出所有 (红色 为注入部分)

        后果:可以查询到所有数据

      如果 原始 sql :select * from id  = '${ id }' and  name =1

      2 -- 注释方式:select * from id  = ' 1 or 1=1 -- ' and  name =1 (红色 为注入部分)

        后果:后面 的    name =1  的 条件被注释掉了

      3 ; 分割 sql    select * from id  = ' 1 ; update order set amount = 0.01 where id =1  ' (红色 为注入部分)

        后果:啥都没查询到,但是 我吧订单金额 了 

    所以  使用 mybatis 尽量不要使用 ${ 参数 } 语法,不用 mybatis  应该尽量 使用 预编译的sql 。

  • 相关阅读:
    忍者X3 链接统计工具
    新版淘宝客广告生成器发布
    今天编写了淘宝客生成工具
    淘宝客appkey做了大范围的取消、查封
    DiscuzX3.0 发布插件
    网易博客营销插件
    [转]iOS 应用程序的生命周期
    [转]Xcode的快捷键及代码格式化
    OC——关于KVO
    OC——关于KVC
  • 原文地址:https://www.cnblogs.com/cxygg/p/10607150.html
Copyright © 2020-2023  润新知