JAVA SecurityManager - 具有多个操作的自定义 BasicPermission
Posted
技术标签:
【中文标题】JAVA SecurityManager - 具有多个操作的自定义 BasicPermission【英文标题】:JAVA SecurityManager - custom BasicPermission with multiple actions 【发布时间】:2013-03-27 16:19:01 【问题描述】:我创建了以下策略文件:
grant
permission StackPermission "use,save";
;
为了访问它,我使用以下参数运行我的 JVM:
-Djava.security.manager -Djava.security.policy=my.policy
我的代码如下所示:
SecurityManager sec = System.getSecurityManager();
sec.checkPermission( new StackPermission( "use,save" ) );
一切都很好,但我想更细化一点,而不检查“保存”操作:
sec.checkPermission( new StackPermission( "use" ) );
即使我的策略同时指定“使用”和“保存”,这似乎也不起作用,我应该怎么做才能提供这样的功能?
非常感谢, 弗拉德
【问题讨论】:
【参考方案1】:通常权限构造函数有三种形式:无参数、name
、name
和actions
。我没有你的StackPermissions
的源代码(我建议把它放在一个非默认包中,顺便说一句),但我猜你刚刚得到了name
,但把它当作action
对待。有点遗憾的是,Java 允许构造函数即使在 arity 上也可以重载。
因此,将类放入一个命名包中,并在类和策略文件中的action
之前添加一个name
。
(一般来说,我建议尽快摆脱“Java 2 安全模型”。相反,使用一个检查方法返回一个对象,该对象能够在没有进一步安全检查的情况下执行特权操作(一个 对象-capability 术语)。在更高层的代码中做同样的事情。)
【讨论】:
以上是关于JAVA SecurityManager - 具有多个操作的自定义 BasicPermission的主要内容,如果未能解决你的问题,请参考以下文章
java基础系列--SecurityManager入门(转)
java中的SecurityManager有没有办法选择性地授予ReflectPermission(“suppressAccessChecks”)?
我可以信任 Java SecurityManager 沙箱吗?