HP Fortify 误报硬编码密码 - Java

GDe*_*der 3 java fortify

我无法找出 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;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么 Fortify 会认为这是一个硬编码密码。密码作为参数传递给构造函数,它来自 Spring @Value

我曾考虑使用@FortifyNotPassword来阻止这种误报,但这实际上是一个密码。我宁愿不使用该注释,因为它可能会错过真正的问题,例如记录此字段的值。

The*_*ini 5

Fortify 认为这是一个硬编码的密码,因为该工具不如人类聪明!这是我作为代码审查员遇到的最常见的误报之一。

Fortify 不应在没有人工代码审核员的情况下以自动化方式使用。Fortify 是为了帮助代码审查者查看有趣的东西,而不是取代代码审查者。代码审查者需要手动抑制或过滤掉这个问题。

如果您想要一个更自动化的解决方案,Fortify 不是正确的工具,因为它会带来太多误报。