Ped*_*ino 7 javascript java security applet
签名的Java Applet与客户端上运行的普通Java应用程序具有相同的安全许可.对于特定项目,我需要这些权限,并且我需要在JavaScript调用的情况下执行特权操作.
现在,问题是,至少对于Ubuntu(目标浏览器和平台)中的Firefox 3,当通过未签名的JavaScript调用applet方法时,它会丢失其特殊权限.由于签名JavaScript不是一个选项,我需要一种方法来解决这个限制.
实现此目的的一种方法是在applet启动时创建一个线程,并在主线程接收到JavaScript调用时调用该线程上的方法.我已经实现了这个想法的工作原型,但我发现它有点笨拙,因为它使用了太多的反射并且不像我想要的那样容易重复使用.
做我正在做的事情有一种共同的,标准的方式吗?而且,如果我的想法是正确的方法,你将如何以可重用的方式实现它?我想要实现的是一个框架,它允许这个"运行方法在特权线程"的东西被用于各种对象.理想的,utopic解决方案将是这样的:
// 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
Run Code Online (Sandbox Code Playgroud)
使用java.security.AccessController类.
有一个doPrivilegedAction和doPrivilegedExceptionAction可以完全满足你的需要.
例如:
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
.. do something that only works with signed applets ..
}
});
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |