druid 普通的查询语句涉及到SQL注入的问题

发布于 2021-11-30 16:12:06 字数 712 浏览 918 评论 14

添加WallFilter后,运行报SQL注入。

报错的代码如下:

public List<CourseResearch> findByCourseCode(String courseCode){
    String sqlClause = "SELECT * FROM courseresearch WHERE researchcoursecode=?";
    return CourseResearch.dao.find(sqlClause, courseCode);
}


运行起来报错如下:
java.sql.SQLException: sql injection violation :  SELECT * FROM courseresearch WHERE researchcoursecode=?
......
......

com.alibaba.druid.sql.parser.ParserException: TODO : EQ WHERE researchcoursecode

.....

一句简单的SQL怎么就会出现SQL注入呢,请大神们给解决下,谢谢!

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

兮颜 2021-12-03 05:00:40

形式是这样的   Insert into Table2(field1,field2,...) select value1,value2,... from Table1

梦里兽 2021-12-03 05:00:37

中文问号?

瑾兮 2021-12-03 05:00:31

回复
这我就不清楚了,请仔细参照Druid关于防止注入的说明

冬天旳寂寞 2021-12-03 05:00:31

为什么没用系统函数sys_guid(),就不会出现SQL注入呢?

孤独患者 2021-12-03 05:00:28

谢谢你们耐心的回答。。。好的,请问下有关于Druid防注入的参考资料或链接吗?请提供一份谢谢

青萝楚歌 2021-12-03 04:59:36

回复
https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter

绝情姑娘 2021-12-03 04:59:04

引用来自“vitoshu”的评论

再次遇到这样的问题

insert into BudgetControl value
  (id, controlyear, controlorgid, controllock, create_op, budgetattribute)
  select /*+ connect_by_filtering */
   sys_guid() as id,
   2015 as controlyear,
   id as controlorgid,
   1 as controllock,
   '097361' as create_op,
   1 as budgetattribute
    from org
   where orgisdeleted = '89'
   START WITH orgprntorgfk = '0100000000'
           or id = '0100000000'
  CONNECT BY PRIOR id = orgprntorgfk

这段SQL代码也报SQL注入,请帮我检查下,谢谢

樱花落人离去 2021-12-03 04:58:57

找到问题了,不可以带系统函数sys_guid().

终止放荡 2021-12-03 04:56:11

再次遇到这样的问题

insert into BudgetControl value
  (id, controlyear, controlorgid, controllock, create_op, budgetattribute)
  select /*+ connect_by_filtering */
   sys_guid() as id,
   2015 as controlyear,
   id as controlorgid,
   1 as controllock,
   '097361' as create_op,
   1 as budgetattribute
    from org
   where orgisdeleted = '89'
   START WITH orgprntorgfk = '0100000000'
           or id = '0100000000'
  CONNECT BY PRIOR id = orgprntorgfk

这段SQL代码也报SQL注入,请帮我检查下,谢谢

初见你 2021-12-03 04:11:07

courseresearch WHERE这两个字符中间是不是用了中文全角空格?

彩扇题诗 2021-12-03 02:22:27

换过了,还是依然报那错

后知后觉 2021-12-02 23:44:03

那个问号 貌似不大对 你多换一个

心舞飞扬 2021-12-02 05:23:31

请问下,EQ WHERE 这是什么解析异常,我查看您的WallFilter源代码,没找到具体描述性语句

不乱于心 2021-12-01 10:57:28

中文问号?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文