【问题标题】:SonarLint best practice for "hard coded password" false positives“硬编码密码”误报的 SonarLint 最佳实践
【发布时间】:2018-08-19 06:52:30
【问题描述】:

SonarLint 将我的代码库中的一些变量标记为阻止程序。类似public static final String INVALID_PASSWORD = "Your password is invalid.";

SonarLint 认为该变量可能包含硬编码密码,这是一个安全风险。但在这种情况下,变量不包含密码,它包含有关密码的消息。

我也有一些像 public static final String INVALID_PASSWORD = "INVALID_PASSWORD"; 这样的代码而不是字符串,SonarLint 也会标记。

“解决”此类问题的最佳做法是什么?想到的两个解决方案是重命名变量和使用@SupressWarnings("code here") 注释。

SonarLint 本身是否对此问题有建议?是否有行业最佳实践?

【问题讨论】:

  • 最佳做法是为变量选择最佳名称。如果您认为 INVALID_PASSWORD 是最佳名称,请忽略该警告。如果您认为有更好的名称,请重命名变量。
  • 最佳实践取决于您的需要,例如,第一个字符串看起来像是显示给最终用户的内容 - 在这种情况下,将字符串转换为资源可能会更好。至少 C# 版本的规则不会抱怨资源,因为它们被认为是自动生成的......

标签: java sonarlint


【解决方案1】:

您应该能够通过以下方式消除声纳问题:

@SuppressWarnings("squid:S2068") // This is not an hard coded password.

注释掉了罪魁祸首。

【讨论】:

    【解决方案2】:

    如果您在 SonarQube 的连接模式下使用 SonarLint, 那么您可以安全地将这个问题标记为误报。 这将是管理软件质量的推荐方法, 但它需要 SonarQube。

    如果您没有使用 SonarQube,那么目前没有(好的)方法可以抑制 SonarLint 中的问题。 在不久的将来(今年),SonarLint 很可能会实现这样的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2013-05-29
      • 2011-03-26
      • 2014-07-31
      • 1970-01-01
      相关资源
      最近更新 更多