java - 存储敏感信息

标签 java security jakarta-ee encryption

我的一个java类将连接到另一台服务器并使用休息服务执行一些操作。 Java 类需要 - 用户名和密码才能连接到远程服务器。在其他计算机上,我们过去使用 oracle cwallet.sso 存储凭据,但这不是当前计算机的选项。我正在考虑将加密密码存储在属性文件中,添加一些盐。我还需要将 key 和盐串存储到某个安全的地方。我们在 RHEL 中是否有其他密码管理替代方案(例如 cwallet),或者有什么建议是实现此目的的最佳方法?

请注意,我将使用 shell 脚本调用此类。

谢谢

最佳答案

这很棘手,因为如果有人访问您的服务器,游戏就结束了。因此,解决方案不仅仅是加密数据,因为它起不了多大作用,但您需要深度安全性。

为了将其放在上下文中,您可以对密码进行加密,加盐等......当攻击者访问服务器时,他将无法读取任何这些文件(即使使用加密的密码),除非他能够成为运行该应用程序的用户。如果他设法做到这一点,他只需要进行内存转储,然后寻找密码(这并不难)。

所以现实世界的解决方案是:

  • 仅允许有限数量的人登录服务器。
  • 只允许更少的用户成为运行应用服务器的用户。
    • 这组人可以读取/更新属性文件
  • 对包含 secret 的文件禁用任何类型的备份。

同样,对文件上的密码进行加密可能会给您带来安全感,但同样,如果您按照上述步骤操作,任何可以读取该文件的人也将能够读取应用程序的内存内容。即使有人做得正确并将密码存储在堆外内存中,一些 Linux 工具也可以读取进程的整个内存映射,所以游戏再次结束。

在这种情况下使用加密只会增加模糊性,并且没有真正的保护。

关于java - 存储敏感信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853560/

相关文章:

java - Hibernate/JPA/GlassFish/Netbeans 在哪里存储数据?

java - 实现一个需要 3 个 boolean 参数的方法

java - 处理程序和线程/可运行

java - 如何从 JSONArray 中删除特定元素?

php - Nginx set_cookie_flag 安全强化 WordPress 的替代方案

security - 如何检测混合内容 SSL 页面上哪些内容不 protected 。?

seo - 在 Google Analytics 中添加自定义 cookie 的正确语法是什么?

java - Stripes 异常处理程序错误

java - 定时器正在创建多个定时器实例

java - 如何在 Java 中使用 BufferedOutputStream 序列化 HashMap?