声纳“凭据不应被硬编码”错误
Posted
技术标签:
【中文标题】声纳“凭据不应被硬编码”错误【英文标题】:Sonar "Credentials should not be hard-coded" Error 【发布时间】:2017-03-03 19:02:05 【问题描述】:在我的应用程序中,我有一个 ApplicationConstants.java 类,用于为应用程序中使用的字符串常量服务。
我有public static final String PASSWORD = "password"
作为常量之一。声纳为此引发错误,如下所示。请让我知道是否有办法处理。
声纳错误:描述受让人资源新问题凭证 不应硬编码:删除此硬编码 密码。 EnrollmentConstant.java false
【问题讨论】:
【参考方案1】:您应该将密码移至配置。
【讨论】:
【参考方案2】:您应该将其解压缩到属性文件中。 Here你可以阅读如何做到这一点
您也可以将它作为系统属性放在应用程序服务器上,并期望它出现在生产机器(例如 Wildfly 服务器)上,然后使用System.getProperty(key)
读取它。这会使部署有点复杂,但项目中不会出现生产密码。
如果您使用 Spring,您可以使用 @Value
注释将值加载到 bean。 Here 你可以阅读如何做到这一点。
【讨论】:
【参考方案3】:您需要将凭据存储在代码之外的加密配置文件或数据库中。在 Soanr 端,他们有硬编码密码/用户名的标志。所以将其保存在属性文件或其他配置文件中。它也不是出于安全原因,建议将密码保存在 String 对象中,因为很容易从已编译的应用程序中提取字符串。
【讨论】:
【参考方案4】:对我来说,不这样做的主要原因是这种情况:密码更改。现在您必须更改代码、重新编译和重新部署。如果您将它放在配置文件中(或其他一些不直接在代码中使用的方式),则不必做所有这些。最坏的情况是你必须退回服务器。最佳情况 - 您的代码可以判断配置文件何时更改并即时获取更改。
【讨论】:
以上是关于声纳“凭据不应被硬编码”错误的主要内容,如果未能解决你的问题,请参考以下文章