为啥我不应该使用默认的 java 安全管理器 [重复]

Posted

技术标签:

【中文标题】为啥我不应该使用默认的 java 安全管理器 [重复]【英文标题】:Why shouldn't I use default java security manager [duplicate]为什么我不应该使用默认的 java 安全管理器 [重复] 【发布时间】:2014-08-29 07:56:55 【问题描述】:

我的部分项目需要允许参与者上传简单且非常基本的 java 代码,我将运行他们的代码并为他们返回结果。我通过限制Web用户帐户的权限,使用线程控制超时情况,以及使用安全管理器沙箱受托程序来降低安全风险。

由于我不太了解什么样的请求可能会造成意想不到的危险,所以我决定使用默认策略。但是大多数人都在谈论使用自定义策略。

我进行了很多搜索,但仍然没有找到任何网站/文献/教程,其中讨论了为什么不应该使用默认安全管理器。在默认策略中存在任何可以通过使用自定义策略来避免的错误吗?

我的意思是,是不是因为默认策略太严格或无用,以至于人们倾向于使用自定义策略。

我已经阅读了 java.security,但我仍然想确定这一点。

【问题讨论】:

对不起,我不明白。你的意思是我应该复制沙盒? 意思是你应该看看名为“Sandbox against malicious code in a Java application”的问题,因为它和你问的问题真的很相似,答案可能对你有用。 谢谢,我已经阅读了链接,它非常有用。我实际上是根据此链接中的答案构建了我的系统。但是我仍然不知道为什么我们应该使用自定义策略而不是默认策略。 (我知道我的问题很愚蠢,但我只需要一个理由) 是不是因为“默认的SecurityManager更多时候是通过任何方法来控制特定的动作,自定义的SecurityManager可以通过单一的方法来控制动作”。链接:***.com/questions/9482307/… 我建议你试试。如果您根本需要 SecurityManager。你会发现它没有给你的额外权限。 【参考方案1】:

必须授权最低限度的权利,而不是“合理的默认值”。

这取决于您的项目的详细信息。这些详细信息定义了您授予客户代码的权限。 list of possible permissions 很大,知道你在做什么你可能可以更紧密地调整它。至少,您应该查看默认策略文件并认为可以另外禁用它。

【讨论】:

因此,默认策略提供“合理的默认值”权限。如果我想停止某些权限,我需要一个自定义权限。对吗?

以上是关于为啥我不应该使用默认的 java 安全管理器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不应该发布用 Ivy 编译的库?

为啥我不应该在访问对象之前使用“if Assigned()”?

Java 使用布局管理器后怎样设置控件的大小。

为啥保留/释放而不是新/删除?

为啥不能通过 HTTPS 使用 CNAME 重定向

为啥 Windows 任务管理器在写入非常大的文件时显示内存增加?我应该担心吗? [关闭]