gpt4 book ai didi

java - 如何避免 "Security - A prepared statement is generated from a nonconstant String"FindBugs 警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:27 26 4
gpt4 key购买 nike

我正在从事一个项目,其中有一段代码如下所示:

String sql = "SELECT MAX(" + columnName + ") FROM " + tableName;                
PreparedStatement ps = connection.prepareStatement(sql);

有什么方法可以更改此代码,以便 FindBugs 停止给我一个“安全性 - 准备好的语句是从非常量字符串生成的”警告?

请假设此代码对于 SQL INJECTION 是安全的,因为我可以在代码的其他地方控制可能的“tableName”和“columnName”的值(它们不直接来自用户输入)。

最佳答案

不要通过+ 连接sql 字符串。你可以使用

String sql = String.format("SELECT MAX(%s) FROM %s ", columnName, tableName);

这比连接字符串慢,因此您应该初始化此 static 然后这不是问题。

我认为使用 StringBuilder 也会修复此警告。

避免此警告的另一种方法是在该字符串(或方法/或类)上方添加 @SuppressWarnings("SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING")

你也可以使用 Filter File定义应排除的规则。

关于java - 如何避免 "Security - A prepared statement is generated from a nonconstant String"FindBugs 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10500305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com