我可以信任 Java SecurityManager 沙箱吗?

Posted

技术标签:

【中文标题】我可以信任 Java SecurityManager 沙箱吗?【英文标题】:Can I trust Java SecurityManager sandbox? 【发布时间】:2013-09-28 12:50:13 【问题描述】:

我正在编写一个 JavaFX2 应用程序,它接受从远程位置加载的任意代码。对我来说,使用自定义 SecurityManager、ClassLoader 和 ProtectionDomain 是要走的路。不幸的是,这似乎与用于沙盒小程序的设置相同,这导致了许多安全漏洞,这反过来又使人们害怕 Java Web 插件并将其从他们的操作系统中完全删除。

Java 沙箱是运行不受信任代码的安全环境,还是只是整个 Java Web 插件不安全?

【问题讨论】:

【参考方案1】:

安全管理器提供您的应用。与提供插件一样多的保护。考虑到安全漏洞,“不多”。

它目前已修复已知的安全漏洞 (AFAIU)。但与任何复杂的插件一样,可能还有更多,有待发现,或者可能在新版本或新 API 中引入。

因此,基本上,您的代码应该在某种程度上超越标准安全管理器,将整个包列入黑名单并(如果需要)提供实用方法,通过这些方法执行通常由该包处理的活动。

但是,这个建议是 20+ 点列表中的第一点,我可能能够说出 2 或 3 个可能的应用程序。在运行不受信任的代码时可能需要提防。虽然这不是问题..

Java 沙箱是在其上运行不受信任代码的安全环境吗..

没有。 Java 安全性可能为针对不受信任代码的安全性提供了一个很好的起点,但它需要针对应用程序进行扩展,并具有其他元素以适合所需的任务。即便如此,仍有“未知的安全漏洞”(在 JRE 以及您自己的安全工作中)需要考虑。

【讨论】:

以上是关于我可以信任 Java SecurityManager 沙箱吗?的主要内容,如果未能解决你的问题,请参考以下文章

将不受信任的java代码限制为单个线程[重复]

在 java 中使用自定义信任库以及默认信任库

在java中使用自定义信任库以及默认信任库

在 Java 中反序列化不受信任的数据有啥安全影响?

信任java Websocket客户端中的所有证书

数字签名不受信任。 Java 将不允许对此应用程序进行任何访问