为了得到一些数据,我创建一个SQL查询:)
当然还有一些过滤和订购零件。防止在Oracle SQL注入“排序依据”部分
为了让我用“是NamedParameterJdbcTemplate”,当我需要的东西添加到“哪里”的一部分,我用的参数映射,以防止注射的结果。
但“按订单”的部分是不同的,因为没有自动转义(和它的SQL的一部分)。该订单部分有时会填充来自用户的数据(直接),有时会从内部代码中添加一些额外的排序参数。有一个问题:有时这种排序字段不仅包含列名,而且还包含sql语句。
现在对于排序每个参数被替换一些字符(如“),以空字符串手动逃过一劫,但我们对我们的代码设置一些参数是有点复杂,通过这一规则。
当您使用jdbc模板时,在查询的排序部分防止sql注入的最佳方法是什么?
+1关怀:) – RedFilter 2012-01-30 13:23:15
可能使用'PreparedStatement'? – Romain 2012-01-30 13:25:30
我不知道jdbc,但可以在Oracle中的'order by'中使用绑定变量。 – Ben 2012-01-30 13:33:11