开发者社区> 问答> 正文

hint not allow error

开启filter之后,如下sql 1.2.3版本会报错

      String url = "jdbc:oracle:thin:@xx/xx";
    String driver = "oracle.jdbc.driver.OracleDriver";
    String user_name = "xx";
    String password = "xx";
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName(driver);
    dataSource.setUsername(user_name);
    dataSource.setPassword(password);
    dataSource.setUrl(url);
    dataSource.setMaxActive(5);
    dataSource.setMaxWait(20000);
    dataSource.setFilters("wall,stat");
    dataSource.init();
 Connection connection = dataSource.getConnection();

PreparedStatement preparedStatement = connection.prepareStatement("select/+QUERY_TIMEOUT(600000000)/ * from test_number"); ResultSet resultSet = preparedStatement.executeQuery();

会有如下报错: java.sql.SQLException: sql injection violation, dbType oracle, druid-version 1.2.3, hint not allow : select/+QUERY_TIMEOUT(600000000)/ * from test_number

at com.alibaba.druid.wall.WallFilter.checkInternal(WallFilter.java:856) at com.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:292) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:568) at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:341) at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:351)

回退到1.1.23版本没有报错。

原提问者GitHub用户fox1987

展开
收起
山海行 2023-07-05 18:10:49 110 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    问题是在使用 Druid 数据源连接 Oracle 数据库时,开启了 WallFilter 过滤器,并且执行 SQL 语句时出现了 SQL 注入检测的错误提示。具体来说,是在使用 Druid 1.2.3 版本时,执行 "select/+QUERY_TIMEOUT(600000000)/ * from test_number" 的 SQL 语句时出现了错误,而在使用 Druid 1.1.23 版本时则没有出现错误。

    这可能是由于 Druid 1.2.3 版本中的 WallFilter 过滤器增加了新的 SQL 注入检测规则,导致一些合法的 SQL 语句被误判为 SQL 注入攻击。具体来说,"select/+QUERY_TIMEOUT(600000000)/ * from test_number" 的 SQL 语句中包含了 Oracle 的查询提示语法 "+QUERY_TIMEOUT(600000000)",而这个语法被 WallFilter 误判为 SQL 注入攻击,从而导致错误提示。

    2023-07-30 20:09:58
    赞同 展开评论 打赏
  • 问题已修复,请用新版本

    https://github.com/alibaba/druid/releases/tag/1.2.5

    原回答者GitHub用户wenshao

    2023-07-06 10:47:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载