java的安全策略
2016-09-25 22:30
134 查看
java的安全策略
if (System.getSecurityManager() != null && factory instanceof SmartFactoryBean) { isEagerInit = AccessController.doPrivileged(new PrivilegedAction<Boolean>() { @Override public Boolean run() { return ((SmartFactoryBean<?>) factory).isEagerInit(); } }, getAccessControlContext()); }
这个是spring 源码中初始化singleton bean的逻辑。
AccessController.doPrivileged 第一次遇见,网上搜索了一些资料。
安全策略背景
众所周知,Java语言具有完善的安全框架,从编程语言,编译器、解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运作。但是,当我们需要逾越这些限制时,例如,读写文件,监听和读写Socket,退出Java系统等,就必须使用数字签名或安全策略文件(*.Policy)。在企业内部网中,本文提出了使用安全策略文件来设置java程序权限的一种简单的方法。由于企业内部网中各台计算机的位置、用途和安全性明确,更适于使用安全策略文件来设置java的权限,软件的安装、设置、升级和迁移都非常的方便,并且,还可以和数字签名配合使用,更重要的是,可以细分每个java程序的权限,使用起来灵活方便。
什么是安全策略?
Java应用程序环境的安全策略,详细说明了对于不同的代码所拥有的不同资源的许可,它由一个Policy对象来表达。为了让applet(或者运行在SecurityManager下的一个应用程序)能够执行受保护的行为,例如读写文件,applet(或Java应用程序)必须获得那项操作的许可,安全策略文件就是用来实现这些许可。策略安全文件(*.policy)格式
grant codeBase "file:/C:/zhouhbFile/developments/eclipse-workspaces/ws-xgsdk-jee/AccessControllerTest/bin/*" { permission java.io.FilePermission "f:/temp/AccessControllerTest2.jar", "read"; permission java.lang.RuntimePermission "createClassLoader"; }; grant codeBase "file:/f:/temp/AccessControllerTest2.jar" { permission java.io.FilePermission "f:/temp/text.txt", "read"; };
grant 表示赋予权限的意思
codeBase 表示后面的代码。即赋予权限给后面的代码。如果不限定则表示作用所有的代码。
具体可详情http://www.blogjava.net/china-qd/archive/2006/04/25/42931.html
一个示例说明安全策略
http://blog.csdn.net/zhang__jiayu/article/details/25654867以上博文的示例,亲自试验是正确的。
如果在policy文件中的
grant codeBase "file:/C:/zhouhbFile/developments/eclipse-workspaces/ws-xgsdk-jee/AccessControllerTest/bin/*"片段中加入如下代码
permission java.io.FilePermission "f:/temp/text.txt", "read";
不使用AccessController.doPrivileged程序也是可以运行的。这表明在调用stack里面,
file:/C:/zhouhbFile/developments/eclipse-workspaces/ws-xgsdk-jee/AccessControllerTest/bin/*是需要读text.txt文件的权限的。博主总结的很好,感谢。
AccessController.doPrivileged(new PrivilegedAction() { public Object run() { doFileOperation(); return null; } });
相关文章推荐
- 企业内部网中使用Policy文件来设置Java的安全策略
- 企业内部网中使用Policy文件来设置Java的安全策略
- 无论是php java后台服务器在域名的根目录添加 crossdomian.xml文件实现flash 安全策略,从而实现通讯
- Java安全管理——策略文件介绍
- Java: System.exit() 与安全策略
- 设置Java的安全策略
- Java安全模型(沙箱or策略)和transient变量
- JAVA年度安全 第七周 内容安全策略
- app的java后端接口的安全访问策略
- 使用Policy来设置Java的安全策略
- java socket安全策略文件
- java中远程对象方法调用中的安全策略问题
- Java: System.exit() 与安全策略
- 使用Policy文件来设置Java的安全策略
- 企业内部网中使用Policy文件来设置Java的安全策略
- Flex Java 安全策略
- java 安全访问策略
- java接口调用安全策略
- java 并发编程---安全共享对象策略
- 关于java安全策略的问题