我在解决HP Fortify SCA正在报告的问题时遇到麻烦。
它报告的问题是:
硬编码密码可能会以某种方式损害系统安全性
无法轻易补救。
代码类似于以下内容:
@Configuration
public class MySpringConfig {
private final String userName;
private final String password;
@Autowired
public MySpringConfig(
@Value("${my.userName}") final String userName,
@Value("${my.password}") final String password) {
this.host = host;
this.userName = userName;
this.password = password;
}
...
}
我不明白为什么Fortify会认为这是一个硬编码的密码。密码作为参数传递给构造函数,该密码来自Spring
@Value
。我已经考虑过使用
@FortifyNotPassword
来阻止这种误报,但这实际上是一个密码。我不想使用该注释,因为它可能会错过实际的问题,例如记录该字段的值。 最佳答案
Fortify认为这是一个硬编码的密码,因为该工具不如人类聪明!作为我的代码审阅者,这是最常见的误报之一。
没有人工审核员,不得以自动化方式使用Fortify。 Fortify可以帮助代码审查者查看有趣的内容,而不是代替代码审查者。代码审阅者需要手动抑制或滤除此问题。
如果您想要一个更自动化的解决方案,Fortify不是正确的工具,因为它带来了太多的误报。