【发布时间】:2010-11-03 15:34:05
【问题描述】:
签名的 Java 小程序与客户端上运行的普通 Java 应用程序具有相同的安全权限。对于特定项目,我需要这些权限,并且我需要通过 JavaScript 调用来执行特权操作。
现在,问题是,至少对于 Ubuntu 中的 Firefox 3(目标浏览器和平台),当通过未签名的 JavaScript 调用小程序方法时,它会失去其特殊权限。由于无法选择对 JavaScript 进行签名,因此我需要一种方法来解决此限制。
实现此目的的一种方法是在小程序启动时创建一个线程,并在主线程接收到 JavaScript 调用时调用该线程上的方法。我已经实现了这个想法的工作原型,但我发现它有点笨拙,因为它使用了太多反射并且不像我想要的那样容易重用。
是否有一种通用的标准方法来做我想做的事情?而且,如果我的想法是正确的方法,您将如何以可重用的方式实现它?我想要实现的是一个框架,它允许将这种“在特权线程中运行的方法”的东西用于各种对象。理想的乌托邦解决方案是这样的:
// when the applet starts-up
PrivilegedExecuter priv = new PrivilegedExecuter(myObject); //or MyClass.class
// ...
// inside a JavaScript-called method (myObject has myMethod)
priv.myMethod(); // myMethod is run synchronously in a privileged thread
【问题讨论】:
标签: java javascript security applet