如何在沙箱中运行不受信任的Java Swing应用程序?

时间:2011-06-08 13:45:06

标签: java security swing sandbox

我发现Java有一些安全权限来控制对AWT资源的访问。有没有什么可以控制Swing应用程序可以或不能做什么,以避免不受信任的应用程序在多应用程序环境中相互破坏?

例如:

  • 打开JFrame。
  • 打开一个完全透明的JFrame。
  • 关闭其他不受信任的应用程序的JFrame实例。
  • 等...

更新问题:

不受信任的应用程序从一个独特的JVM启动,在一个单独的线程中启动,并从一个单独的类加载器加载。我想知道如何确保上述任何一个中断的例子都不会发生。

另外,如何通过模仿其UI来阻止不受信任的应用程序伪装成来自不同应用程序的应用程序?欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

我不确定你想做什么是可能的。 AWT具有一组权限,可以在沙箱中运行应用程序时进行配置(请参阅AWTPermission,但它们非常有限,并且似乎更有针对性地阻止applet做坏事。

最重要的是,阻止应用程序模仿另一个应用程序对我来说似乎是不可能的;如果允许两个应用程序创建UI组件,那么是什么阻止了创建与其他组件相同的UI组件?

如果你有一个你信任的应用程序和一个你不信任的应用程序,那么你需要这些应用程序无法控制的代码,以便以不同的方式运行它们。例如,一个疯狂的想法是一个窗口管理器,在不受信任的应用程序周围放置一个红色边框,以便用户可以将其识别为不受信任。但是,当两个应用程序在同一个JVM中运行时,Java似乎没有足够的支持,因为似乎没有任何方法可以隔离这两个应用程序(一个简单的FocusListener可以允许一个应用程序访问对另一方的组成部分并改变它们。)