众所周知,用于 Web 浏览器的 Java 插件存在许多安全问题,至少在过去是这样。谷歌浏览器甚至不再支持它,将其描述为陈旧的技术,而 Firefox 在它附近有一个小警告消息。
但是没有浏览器插件的 JRE 是否安全?Java 桌面、移动和服务器应用程序是否像 Java 插件一样容易受到攻击?
众所周知,用于 Web 浏览器的 Java 插件存在许多安全问题,至少在过去是这样。谷歌浏览器甚至不再支持它,将其描述为陈旧的技术,而 Firefox 在它附近有一个小警告消息。
但是没有浏览器插件的 JRE 是否安全?Java 桌面、移动和服务器应用程序是否像 Java 插件一样容易受到攻击?
是的——Java 桌面和服务器应用程序基本上是安全的。
当你运行一个桌面应用程序——Skype、Picassa 等等——你就可以让该软件完全访问你的计算机。您必须信任该软件。
相反,当您在 Web 浏览器中运行 Java 小程序时,该小程序在称为沙箱的受限环境中运行。沙箱存在,因此您不必信任 Java 小程序。
Java有很多漏洞;几乎所有这些都是“沙盒逃逸”。换句话说,如果您运行的是旧版本的 Java,恶意小程序可能会突破沙箱并控制您的计算机。
支持沙盒的技术并不多。事实上,人们经常运行不受信任的软件的常见技术只有三种:Java、JavaScript 和 Flash。这些都存在很多沙盒逃逸漏洞,可见编写安全沙盒的难度。
当您在桌面或服务器上运行 Java 时,您信任正在运行的 Java 代码,因此您不依赖沙箱。在这种情况下,主要关注的是不受信任的数据是否会干扰应用程序。例如,如果您在 Skype 上与某人交谈,他们是否会发送 Skype 处理不当并允许他们控制您的计算机的恶意消息。(这里我只是以 Skype 为例)。
Java 运行时中的错误导致桌面或服务器应用程序被黑客入侵的情况很少。通常这是因为应用程序代码中的错误,而不是 Java 本身。
但是没有浏览器插件的 JRE 是否安全?Java 桌面、移动和服务器应用程序是否像 java 插件一样容易受到攻击?
即使我们不考虑 Java 插件,JRE 也不是很安全。为了给您提示,您将在此处找到一长串安全漏洞,包括今年发现的影响不同版本 JRE 的严重漏洞。
我们在 JVM(和其他地方)中发现的沙盒机制并不是那么完美,它们有时会被绕过:
尽管 Oracle 意识到 Java 漏洞也可以通过向易受攻击组件中的 API 提供恶意输入来在服务器部署中被利用,但它的信息通常是大多数 Java 漏洞仅影响 Java 浏览器插件或 Java 的利用场景Gowdiak 周二通过电子邮件表示,服务器上的缺陷是不可能的。
“我们试图让用户意识到甲骨文关于 Java SE 漏洞影响的声明是不正确的,”Gowdiak 说。“我们证明,Oracle 评估为仅影响 Java 插件的错误也可能影响服务器。”
虽然 Java RE 并不总是像宣传的那样安全,但替代方案甚至更糟。像 C++ 这样的其他技术甚至不会尝试提供沙盒并允许程序为所欲为。当你在你的机器上运行一个本地程序时,你应该假设你允许它做它想做的任何事情。不管它是用 C、Python、Java 还是其他方式实现的。