如何遵守 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
【问题讨论】:
interval
是 int
还是其他数字?如果是,您可以保持这种状态,因为那时无法进行 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插件,忽略规则后如何再次开启规则?