在 Java 应用程序的内存中保存从密码库 (CyberArk) 检索到的纯文本密码是否安全?

问题描述 投票:0回答:1

我有一个具有图像上传功能的应用程序,图像存储在基本上是 SFTP 服务器的第 3 方服务上。用于访问此存储的凭据最初是在 java 服务类本身中硬编码的,为了保护它,我计划将 SFTP 服务器凭据保存在密码库 (CyberArk) 中,然后以编程方式检索凭据(当应用程序启动时up) 使用 cyberArk REST API 和证书验证方法。 从保管库中检索凭据后,我计划将密码保存在内存中,并将其用于与 SFTP 服务器的后续通信。这是正确的方法吗?或者这仍然是一个安全风险吗?

Note1:这是一个 Java Struts2 应用程序,部署在 JBoss 服务器上。

Note2:我在一些地方读到使用 char 数组而不是字符串来存储密码更安全,但不确定这是否足够。

java security struts2 password-protection cyber-ark
1个回答
0
投票

如果有人有权执行内存转储(java 堆转储或操作系统级转储),他们可以获得密码。如果将其存储为字符串以及将其存储为字符数组,则为真。

字符数组更好,因为您可以在使用完数据后清除数据(将数组中的字符设置为 0 或其他值)以摆脱敏感值。但是,如果您通过 REST 调用获得了密码,那么很可能某个地方已经有一个字符串,所以这可能只是提供一种虚假的安全感。

另一方面,如果有人可以转储您的内存以获取缓存的密码,他们也可能获得调用 cyberArk API 的凭据?因此,您可能会更好地专注于锁定服务器并缓存密码。你的电话,真的。

© www.soinside.com 2019 - 2024. All rights reserved.