查询返回带有错误参数的 sql 字符串

Posted

技术标签:

【中文标题】查询返回带有错误参数的 sql 字符串【英文标题】:Query returning sql string with wrong parameters 【发布时间】:2022-01-23 21:40:45 【问题描述】:

我目前正在修复我的项目中的一些 SQL 注入错误。

这是我当前的 sql 字符串:

String sql = "select * from :table order by storenum";

我是这样设置参数的:

SQLQuery query =  sess.createSQLQuery(sql).setParameter("table", table);

(table是通过方法传入的字符串)

每当我运行程序时,我都会得到这样的结果:

select * from ? order by storenum

【问题讨论】:

【参考方案1】:

您不能动态绑定表名,只能动态绑定值,因此您必须借助字符串操作/连接来动态获取表名。但是,您可能希望将其转义以避免 SQL 注入。

【讨论】:

以上是关于查询返回带有错误参数的 sql 字符串的主要内容,如果未能解决你的问题,请参考以下文章

NancyFX:带有查询字符串参数的路由总是返回 404 NotFound

DB2 - 使用带有字符串数组参数的 Dapper 选择查询将不会返回正确的结果

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

带有参数的 PL/SQL 过程/函数从选择查询返回表

使用 Hibernate 时如何打印带有参数值的查询字符串