报告对 java.sql.Connection.prepareStatement()java.sql.Connection.prepareCall() 或其任何变体的调用,这些变体会将动态构造的字符串作为要准备的语句。

构造的 SQL 语句是安全漏洞的常见来源。 默认情况下,此检查会忽略编译时常量。

示例:

  String bar() { return "bar"; }

  Connection connection = DriverManager.getConnection("", "", "");
  connection.("SELECT * FROM user WHERE name='" + bar() + "'");
使用检查设置将任何 static final 字段视为常量。 请注意,因为启用该选项时,像下面这样的字符串将被忽略:
  static final String SQL = "SELECT * FROM user WHERE name='" + getUserInput() + "'";