繁体   English   中英

如何为网站的小程序授予AllPermission特权?

[英]How do I grant a site's applet an AllPermission privilege?

我想指定某些applet与我的计算机上的java.security.AllPermission一起运行(用于调试和安全性测试)。 但是,我不想使我运行的所有小程序都具有此权限。 因此,编辑我的用户Java策略文件(通过测试,我已确保它是正确的策略文件),我尝试输入以下值:

grant codeBase "http://host_where_applet_lives/-" {
 permission java.security.AllPermission;
};

当applet尝试执行强大的操作(在我的情况下,创建一个新的Thread)时,此值将失败。 但是,当我输入以下值时:

grant {
 permission java.security.AllPermission;
};

小程序能够执行强大的操作。 唯一的区别是缺少codeBase属性。

这里[1]提出的类似问题的答案似乎暗示(但从未显示或证明)可能需要AccessController.doPrivileged()调用。 对我来说,这听起来是错误的,因为当我向所有小程序授予权限时,不需要该调用(我显示的第二个示例)。 即使这是一个解决方案,乱扔我用AccessController.doPrivileged()调用运行的小程序也不容易,也不一定是可能的。 最重要的是,我的测试表明这仍然无法正常工作。 但是,我很高兴听到有关它的更多想法。

[1] 无法为Intranet小程序配置AllPermission。 有人可以帮忙吗?

对于您所引用的类似问题的答案表明,从JavaScript调用Java applet代码可能会导致SecurityException因为AccessController将执行堆栈检查,并且由于不受信任的JavaScript而失败。 我试用了代码,并且肯定地,如果没有doPrivileged()调用,Firefox将无法运行JavaScript调用的applet,但是Safari会(至少在Mac OSX上)运行。

如果要通过JavaScript调用applet,则可以尝试使用Applet.paint()方法来自动调用applet。 或者,您可以使用doPrivileged()方法来doPrivileged()堆栈检查,并为您提供所需的任何特权。 当然,任何不受信任的代码都可以调用您的特权代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM