Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HP强化假阳性硬编码密码-Java_Java_Fortify - Fatal编程技术网

HP强化假阳性硬编码密码-Java

HP强化假阳性硬编码密码-Java,java,fortify,Java,Fortify,我很难找到HP Fortify SCA报告的问题的解决方案。 它报告的问题是: 硬编码密码可能会以以下方式危害系统安全: 不容易补救 代码与此类似: @Configuration public class MySpringConfig { private final String userName; private final String password; @Autowired public MySpringConfig( @Va

我很难找到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不是合适的工具,因为它会带来太多的误报。

是的,事实是Fortify并没有那么聪明。事实证明,投诉与“password”出现在字符串
@Value(${my.password}”)
中有关。只需将其更改为
@Value(${my.Value}”)
即可消除错误

这也与它存储在字段中这一事实有关。最后,我将课堂重新安排得更像这样,违规行为消失了:

@Configuration
public class MySpringConfig {

    @Bean
    public MyBean myBean(
            @Value("${my.userName}") final String userName,
            @Value("${my.password}") final String password) {
        return new MyBeanThatNeedsUserCredentials(userName, password);
    }

}

Fortify有不同的分析器。在本例中,似乎使用了语义分析器。这只是“密码”一词的grep。所以你可以判断这个病例为假阳性。语义分析器往往非常嘈杂


如果使用AuditWorkbench,在Summary选项卡下(单击查找后),可以看到用于查找问题的引擎。它在面板的右侧。

对我来说,这段代码是一个巨大的安全隐患。“@Value”让开发者非常容易生气。如果您将my.password保留为纯文本,这将是一个超级问题。如果您正在使用类似jascrypt的东西来加密my.password,那么您将解密密钥保存在哪里?在环境变量中?这也是一个安全问题。