Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SecurityManager是一个完整的安全解决方案吗?_Java_Security - Fatal编程技术网

Java SecurityManager是一个完整的安全解决方案吗?

Java SecurityManager是一个完整的安全解决方案吗?,java,security,Java,Security,我可以避免第三方代码使用定制的SecurityManager创建新线程、启动新VM或泄漏数据吗?您当然可以做前两件事。然而,我不知道你所说的“泄露数据”是什么意思 注意,您不需要自定义的SecurityManager,只需要自定义策略文件。线程创建会导致调用SecurityManager。检查Access(g),其中g是线程组。这反过来需要SecurityConstants.MODIFY\u THREADGROUP\u权限 创建新JVM实例的唯一方法是启动一个新进程。这将需要SecurityCo

我可以避免第三方代码使用定制的SecurityManager创建新线程、启动新VM或泄漏数据吗?

您当然可以做前两件事。然而,我不知道你所说的“泄露数据”是什么意思


注意,您不需要自定义的SecurityManager,只需要自定义策略文件。

线程创建会导致调用
SecurityManager。检查Access(g)
,其中
g
线程组
。这反过来需要
SecurityConstants.MODIFY\u THREADGROUP\u权限

创建新JVM实例的唯一方法是启动一个新进程。这将需要
SecurityConstraints.FILE\u EXECUTE\u ACTION

因此,如果您的SecurityManager对这两种权限都引发了异常,那么您的前两种情况将被涵盖


您需要对构成“泄漏数据”的内容进行限定。是否担心意外或故意泄漏?是否担心不受信任的代码访问数据,或者其他线程、类等可以访问不受信任的代码的数据?

没有什么是完整的安全解决方案(除非您询问销售人员)

我认为SecurityManager可以控制所有这些(正如所说的,您不一定需要自定义安全管理器,您可以通过一个策略简单地配置很多)。控制线程、进程执行、强制访问私有数据和网络连接(第三方应用程序向竞争对手发送私有数据等)——这就是SecurityManager的作用

但是,您需要权衡需要多少安全性。考虑到每个java安全更新,Sun在java安全沙箱中修复3-4个漏洞()。这些更新每年大约进行3-4次(或者进行了3-4次,不知道Oracle收购会对其产生什么影响)。因此,这12个年度漏洞中的任何一个都可能导致您的数据泄露


如果我的秘密对其他人非常有价值,我个人不会信任SecurityManager来控制在我的环境中运行的潜在恶意第三方代码。(我没有什么有价值的秘密,而且我已经不相信在我的浏览器中运行的Java在SecurityManager下的行为。)

是,使用例如
Runtime.exec
SecurityManager
可用于限制外部进程的执行。任何图灵完整语言都可以创建VM,对此您无能为力。。。我想OP只是想禁止运行任何外部程序。但策略文件不是被动的,最终用户的修改吗?我真的不明白这个问题的意思。原来的问题是“导出”而不是“泄漏”。这似乎意味着问题在于不受信任的代码是否可以发布它可以从外部访问的数据。事实证明,清除互联网上所有的秘密渠道有点棘手。我明白了。读(另一个)汤姆的那篇文章和其他问题。如果他担心最终用户修改策略文件,我可能误解了他的情况。