gpt4 book ai didi

java - SystemSecurityManager 默认做什么?

转载 作者:行者123 更新时间:2023-11-30 03:16:18 25 4
gpt4 key购买 nike

我查阅了该线程的源代码,发现了这个:

public final void checkAccess() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkAccess(this);
}
}

SystemSecurityManager 默认情况下做什么,或者它是一个依赖于系统的事情,这不是标准化的。事实上,如果一个线程试图中断另一个线程,我应该预期会发生什么?如果我不重写 checkAccess ,会抛出 SecurityException 吗?我自己的方法?

最佳答案

安全管理器是一个类,它允许 Java 应用程序允许在其代码库中执行哪些操作和禁止执行哪些操作。

安全管理器的常见用法是禁止 jvm 中的代码访问系统属性(如果在沙箱中运行)、进行 http 调用或在底层文件系统上创建文件。

由于 SecurityManager 是可配置的,因此很难默认定义它的功能,即使它位于同一平台上,因为尽管安全管理器是一个标准化的东西 ,即使对于同一个应用程序实例,您也可以拥有多种配置和配置选项。您可以通过提供不同的安全管理器策略文件来启动您的应用,这可能会极大地影响您的应用的行为方式。

常见的做法是通过提供文件来配置安全管理器:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html

我不得不说,在我 7 年的 Java 经验中,只有当 jvm 在沙箱中运行时,我才处理过安全管理器和策略文件。然而,有趣的是,Android jvm 还有一个安全管理器,这似乎不是执行安全策略的推荐方式: http://developer.android.com/reference/java/lang/SecurityManager.html

另外,请检查这个答案: Java Security Manager - What does it check?

简而言之:

安全管理器是众所周知的事情。它可以配置一个策略文件,该文件确定它的行为方式,因此当您不重写其 checkAccess 方法时,它可以或不能根据此策略文件抛出异常。因此,为了确保允许所有操作,您可以将 PermitAllSecurityManager 作为默认系统安全管理器,其中每个操作都可以被允许,或者您可以为默认安全管理器指定一个策略文件,以允许所有操作。

关于java - SystemSecurityManager 默认做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com