如何遵守 Sonar 的规则“应该使用 SQL 绑定机制”

Posted

技术标签:

【中文标题】如何遵守 Sonar 的规则“应该使用 SQL 绑定机制”【英文标题】:How to comply with Sonar's rule "SQL binding mechanisms should be used" 【发布时间】:2019-01-30 12:58:03 【问题描述】:

如何更改以下查询以符合SQL Injection 规则

select * from table where modified_on < now()- INTERVAL '" + interval + " seconds'

我无法更改用于在 Java 中准备 Prepared Statement 的查询

 select * from table where modified_on < now()- INTERVAL ? seconds

【问题讨论】:

intervalint 还是其他数字?如果是,您可以保持这种状态,因为那时无法进行 SQL 注入。如果它不是数字,则将其设为一个;-) 也许这有帮助?:postgresql.org/message-id/436170E1.6000909@opencloud.com @Lothar,明白了。我很好奇我们将如何删除一个变量。谢谢。 @MarkRotteveel。有用。谢谢。 【参考方案1】:

您可以将秒数作为参数传递,并乘以1秒的间隔

select * 
from table 
where modified_on < now() - (? * INTERVAL '1 second')

【讨论】:

以上是关于如何遵守 Sonar 的规则“应该使用 SQL 绑定机制”的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA环境下的SonarLin插件,忽略规则后如何再次开启规则?

如何从 Sonar 导出 FindBugs/PMD/Checkstyle 规则并导入 Netbeans

sonar如何添加自定义JAVA规则

sonarqube怎么自定义Java代码规则

阿里巴巴java规则p3c结合sonar使用

sonar做代码检测时如何忽略一些代码文件