问题标签 [securitymanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RMI: Using a foreign remote object
Just when I thought I know how RMI works, it comes back and tell me I do not. The following situation:
I have given:
- an interface: http://pastebin.com/KxXH1jQ9
- an adress where the rmiregistry is runnung
The interface offers cleary 3 getter methods to gain informations about the object. I simply want to lookup the object call the three methods and print out theirs values:
However the following implementation ( http://pastebin.com/d4JS0Wai ) does not do the trick resulting in the following exception:
Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: Article at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at rmi.ArticleDisplayer.main(ArticleDisplayer.java:21)
Caused by: java.lang.ClassNotFoundException: Article at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) ...
Also I don't know why I should need a SecurityManager anyway, as my machine is not executing the code. The code is executed on the machine running the rmiregistry. Anyway this is my policy file: http://pastebin.com/chGEqceA
swt - 在 Java WebStart (jnlp) 上运行的 SWT 嵌入式 Mozilla 浏览器的 SecurityManager 问题
我正在开发非标准应用程序。基本上它是使用嵌入式 Mozilla 浏览器(mozilla-interfaces-1.9.2.12.jar、mozilla-glue-1.9.2.12.jar)的 SWT 应用程序,它应该显示包含小程序的 html 页面(也是我自己开发的)。这些小程序经过签名并将证书导入到密钥库中。在标准的独立 Mozilla 浏览器中运行小程序时,一切正常。
即使正常运行我的 SWT 应用程序(我的意思是作为没有 SecurityManager 的独立 Java 桌面应用程序)一切正常 - 嵌入式浏览器出现并显示带有小程序的 html 页面。
但是,当我尝试通过 Java Web Start (jnlp) 运行此应用程序时,我遇到了麻烦。我想我的 jnlp 定义明确,它包含我能够在 Internet 讨论中找到的所有标签。所以有例如
等我的 SWT 应用程序,resp。它的所有 jar 文件都已签名(与用于小程序的证书相同)。它开始正常,它执行在没有所有权限和签名的情况下不允许的操作,它甚至显示 SWT 窗口(因此 SWT 本身工作正常),但是当它应该显示嵌入式浏览器时,我得到 UnsatisfiedLinkException。有趣的是,当我创建具有某些特定权限集的 .java.policy 文件时,它可以正常工作,applet 也可以正常工作。扮演福尔摩斯的角色我发现这组权限包含
这对你们中的任何人都有意义吗?看起来 swt mozilla 浏览器在某种特定的 SecurityManager 中运行,它忽略了应用程序本身已签名并且标记存在于我的 jnlp 文件中的事实。
当我加载没有小程序的页面时,仍然提到两个权限是显示浏览器窗口所必需的。我想在没有任何 .java.policy 文件且用户端没有额外设置的情况下运行此应用程序。我感谢每一个建议。
先感谢您。
沃伊塔
java - Java 安全管理器 - 它检查什么?
这篇关于 Java 安全性的文章说:
每当即将尝试危险操作时,Java 库中的代码都会咨询安全管理器。
那么,这究竟意味着什么?假设我已经实现了自己的安全管理器并为整个 JVM 启用了它。现在,java 运行时是否会为每个 java 调用(如 System.out.println() 等)咨询我的安全管理器,还是只咨询dangerous
API 调用,如 System.exit() 、文件操作等?
编辑:让我澄清我的问题,
我不是在质疑安全经理的可能性。我只是询问是否单独对危险的 api进行安全检查,还是对每个方法调用都进行安全检查。在具有大量代码的应用程序的情况下,这反过来会导致巨大的性能下降。
java - 防止 API 中的 System.exit()
System.exit()
如果遇到异常,我正在使用第三方库。我正在使用 jar 中的 API。无论如何我可以阻止System.exit()
调用,因为它会导致我的应用程序关闭?System.exit()
由于许多其他许可问题,删除后我无法反编译和重新编译 jar 。我曾经在stackoverflow中遇到过一个[我不记得的其他问题]的答案,我们可以使用SecurityManager
Java来做这样的事情。
java - 使用安全管理器阻止公共方法访问
我曾经遇到过一篇文章,说我们可以使用SecurityManager
来限制某些类调用public
另一个类的方法。我们如何做到这一点?
java - 在 Java 中限制文件访问
问题:
在我的 Java 应用程序(不是小程序)中,我希望将某些文件操作限制为所有类,但不应限制的类的列表/组/包除外。
具体来说,我想限制...
- 文件读取
- 文件写入
- 文件创建
- 文件删除
...这样它们只能在当前工作目录中完成,但不受限制的类除外。
SecurityManager 尝试:
我尝试实现实现此行为的 SecurityManager 类的子类,但是似乎在进行检查时,提供的文件信息不仅仅提供文件名(除非我遗漏了什么?)。
另外,我不太明白在这种情况下如何找出调用的类,以允许我确定是允许操作还是抛出异常。有什么方法可以让我获得这种方法工作所需的所有信息?
基于策略的尝试:
我还知道 Java 策略旨在限制类的操作,包括文件操作等。但是,我真的很难找到一个好的资源来学习如何使用.policy文件来解决我的问题。
问题总结:
1)有没有比我提到的更可取的替代方法?
2)这可能使用SecurityManager吗?我是否错过了我应该如何实际实施这种方法?
3)这可能使用策略文件吗?在这方面我错过了什么好的资源吗?
我真的不反对我需要为实现这一目标而付出的任何努力——我只是不确定我应该如何正确地处理它。我也非常缺乏好的资源来教我足够多的关于我提到的两种可能的方法,让我自己实现它。最重要的是,我不怕需要大量阅读!
感谢您提前提供的任何帮助。
java - 如何检测 ClassLoading 的时间
我有一个 TrirdParty API,其中包含一个 CLass [比如说 A]。它有一个奇怪的静态块,类似于以下内容:
我想阻止调用System.exit()
被覆盖的SecurityManager
. 但是,我想在执行SecurityManager
此块之前覆盖,然后static
我想恢复原始安全管理器。
我知道如何替换/覆盖/恢复SecurityManager
。
我的问题是如何确定何时static
调用块[基本上是在加载类时],以便在此之前我将使用我自己的SecurityManager
来防止System.exit()
和之后恢复原始SecurityManager
.
请注意,仅在执行静态块的持续时间内覆盖安全管理器很重要。
编辑:
出于许可原因,更改源不是一种选择。
java - Java SecurityManager 多线程
我一直在尝试使用自定义 SecurityManager 来沙箱化一些外部加载的代码。我拥有的 SecurityManager 工作正常。我采取了与这里许多帖子建议的方法相同的方法:每当执行潜在危险代码时设置自定义管理器,然后恢复为标准管理器。这工作正常,做我想要的。但是,该应用程序是多线程的:2 个线程使用自定义管理器,1 个使用默认管理器。这会导致受信任代码可能无法正常运行,因为另一个线程只是设置了自定义安全管理器。有没有办法解决这个问题?或者,有更好的方法吗?我看到一些帖子谈论对同一个安全管理器使用不同的策略,但我找不到一个很好的例子。非常感谢任何帮助。
java - Java:没有安全管理器:禁用 RMI 类加载器
嗨,我有 RMI 应用程序,现在我尝试从客户端调用服务器上的一些方法。我有以下代码:
服务器已正确加载,但是当我尝试调用时,server.registerOHLCProvider(provider);
出现以下错误:
我已将我的策略文件添加为 VM 参数,如下所示:
它一直在说有关禁用类加载的内容,所以我想问题出在某个地方……谢谢!
tomcat - Tomcat 中的安全管理器
我有一个 Tomcat Java 应用程序,我希望它是安全的,所以我创建了一个自定义 SecurityManager,我在其中阻止了所有我认为危险的操作(我可能错过了一些,但这是另一个问题)。它工作了一段时间,但后来我的应用程序停止工作,在 catalina.out 我看到以下消息:
在第一行中,gwtchat.server.ScriptBotSecurityManager 是我自定义的 SecurityManager,函数是 checkWrite(FileDescriptor fd),我阻止了它,因为不希望我的应用程序写入文件。
当然,我只想阻止我的应用程序,而不是 Tomcat 服务器本身。我怎样才能做到这一点?