给定正确的代码,编写安全的 java 程序(除非针对特定的利用)不会离开沙箱或做潜在危险的事情是相对微不足道的。
但是,我的问题源于相反的情况。root 用户对 JVM 中的信息有什么样的访问权限?我是否可以采取任何保护措施来限制或删除 root 用户可以查看/修改的内容?最后,有没有人知道有什么好的资源可以让自己符合这个规范?对谷歌来说,这似乎是一个非常困难的话题......
给定正确的代码,编写安全的 java 程序(除非针对特定的利用)不会离开沙箱或做潜在危险的事情是相对微不足道的。
但是,我的问题源于相反的情况。root 用户对 JVM 中的信息有什么样的访问权限?我是否可以采取任何保护措施来限制或删除 root 用户可以查看/修改的内容?最后,有没有人知道有什么好的资源可以让自己符合这个规范?对谷歌来说,这似乎是一个非常困难的话题......
这个问题让我想起有人问“有没有办法在我的配置文件中加密用户名和密码?”。
关键是,如果用户已经对您的服务器具有 root 访问权限,那么您需要担心的事情比他们查询正在运行的 JVM 更重要。
例如,假设您的应用程序有一个 hibernate.cfg.xml,他们可以快速查看您的数据库的凭据。如果他们是恶意的,当他们可以访问服务器时,他们可以做更糟糕的事情。
对我来说幸运的是,我并不担心有人可以访问我的服务器 - 只是有人可以访问我在他们的机器上执行的代码(允许在那里运行)
如果他们控制系统(例如,他们具有 root 访问权限),他们可以读取您的 JVM 的地址空间,并且(考虑到时间和技能)恢复嵌入在您的代码或数据中的任何信息/秘密。
没有真正有效的解决方案。(对于熟练的黑客来说,混淆之类的东西只是“减速带”。)如果你不能信任具有 root 访问权限的人,你不应该在他们的机器上运行包含机密的代码。
root 可以做任何事情,但你不应该首先使用 root。大多数人使用 root 能够绑定到低于 1000 的端口,例如用于 http(s) 服务器的 80 或 443。
您可以解决这个问题,而不是以 root 身份运行您的 jvm。