我发现java有一些安全权限来控制对awt资源的访问。是否有什么可以控制swing应用程序可以做什么或不能做什么,以避免不受信任的应用程序在多应用程序环境中相互干扰?
例如:
打开Jframe。
打开一个完全透明的jframe。
正在关闭其他不受信任的应用程序的JFrame实例。
等。。。
更新问题:
不受信任的应用程序从一个惟一的jvm启动,在一个单独的线程中,并从一个单独的类加载器加载。我想知道如何确保上述破坏性的例子不会发生。
另外,如何通过模仿一个不受信任的应用程序的用户界面来防止它从另一个应用程序伪装成另一个应用程序?欢迎任何建议。
最佳答案
我不确定你想做什么。awt有一组权限,在沙箱中运行应用程序时可以配置这些权限(请参见AWTPermission,但它们非常有限,而且似乎更倾向于防止applet做坏事。
除此之外,阻止一个应用程序模仿另一个应用程序对我来说似乎是不可能的;如果允许两个应用程序都创建ui组件,又是什么阻止一个应用程序创建与另一个应用程序相同的ui组件?
如果你有一个你信任的应用程序,而有一个你不信任的应用程序,你需要这些应用程序无法控制的代码来以不同的方式运行它们;例如,一个疯狂的想法是窗口管理器在不受信任的应用程序周围设置一个红色边框,这样用户就可以将其识别为不受信任的应用程序。但是当两个应用程序都在同一个jvm中运行时,java似乎没有足够的支持,因为似乎没有任何方法来隔离这两个应用程序(一个简单的focuslistener可以允许一个应用程序访问另一个应用程序的组件并更改它们)。
关于java - 如何在沙箱中运行不受信任的Java Swing应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6279690/