声纳“凭证不应该是硬编码的”错误

时间:2016-10-21 12:49:57

标签: java sonarqube

在我的应用程序中,我有一个ApplicationConstants.java类,用于应用程序中使用的String Constants。 我有public static final String PASSWORD = "password"作为常数之一。声纳如下所示抛出错误。如果有办法解决这个问题,请告诉我。

  

声纳错误:说明受理人资源新问题凭据   不应该硬编码:删除此硬编码   密码。 EnrollmentConstant.java false

4 个答案:

答案 0 :(得分:3)

您应该将密码移至配置。

答案 1 :(得分:1)

您应该将其解压缩到属性文件中。 Here您可以阅读如何操作

您也可以将它作为系统属性放在应用程序服务器上,并期望它出现在生产机器上(例如Wildfly服务器),然后使用System.getProperty(key)读取它。这会使部署变得复杂,但项目中不会出现生产密码。

如果使用Spring,则可以使用@Value注释将值加载到bean。 Here您可以阅读如何执行此操作。

答案 2 :(得分:1)

对我来说,不这样做的主要原因是这种情况:密码更改。现在您必须更改代码,重新编译和重新部署。如果你有一个配置文件(或其他一些没有直接在代码中的方式),你不必做所有这些。最糟糕的情况是你必须反弹服务器。最好的情况 - 您的代码可以判断配置文件何时发生了变化并立即获取更改。

答案 3 :(得分:0)

您需要将代码之外的凭据存储在加密的配置文件或数据库中。在Soanr端,它们具有硬编码密码/用户名的标志。所以将其保存在属性文件或其他配置文件中。它也不是由于安全原因,建议将密码保存在String对象中,因为很容易从已编译的应用程序中提取字符串。