14 条回复  ·  121 次点击
xuanbg 小成 2024-9-18 06:13:31
这真是程序设计领域的「因噎废食」,简直笑死
bli22ard 小成 2024-9-18 09:48:18
外部输入的 sql 参数,不使用预编译参数,不对合法性进行检查,sql 注入了。 这和 mybatis 没什么关系。
CutieJohn 小成 2024-9-18 10:51:41
至少两年前就被这个 CVE 搞了,最后我们在内部做了例外
COOOOOOde 小成 2024-9-18 19:52:12
哪个傻蛋真会这样用啊,知道 mybatis 不就知道这个,我觉得根本不是问题
cslive 小成 2024-9-19 10:35:25
你这个例子不对
// #{column}=#{value}      ==>      `name`="张三"          其中 `name`带转义
new LambdaUpdateWrapper<user>().eq(true, user::getName, "张三")  

//  ${column} = #{value}    ==>    name = "张三"   其中 name 就是纯字符串拼接
new UpdateWrapper<user>().eq(true, "name", "张三")
这个例子才对,mybatis 文档强调过"$"与"#"的区别,还说明"$"是不安全的,但是 mybatis-plus 并没有强调上面两个方法的区别,只是说明两个生成的 sql 相同,没有强调普通 Wrapper 是不安全的,可能存在 sql 注入
12
返回顶部