Java Security安全系列文档翻译笔记————PolicyFile

地址是:http://docs.oracle.com/javase/tutorial/security/tour1/wstep1.html

主要是针对运行java代码的用户而言。让Java代码运行在Secure Manager的管理下,只有在Policy File中声明的权限,代码才可以执行相应的操作,以此来建立一个沙箱。

估计这也是Android的Permission授权机制也是这个哦。

policytool工具:在sdk中D:\Program Files\Java\jdk1.6.0_43\bin\policytool.exe    D:\Program Files\Java\jdk1.6.0_43\jre\bin\policytool.exe

PolicyFile的后缀是.java.policy ,默认文件路径是D:\Program Files\Java\jdk1.6.0_43\jre\lib\security\java.policy

测试类GetProps.java

       System.out.println("About to get os.name property value");

            s = System.getProperty("os.name", "not specified");
            System.out.println("  The name of your operating system is: " + s);

            System.out.println("About to get java.version property value");

            s = System.getProperty("java.version", "not specified");
            System.out.println("  The version of the JVM you are running is: " + s);

            System.out.println("About to get user.home property value");

            s = System.getProperty("user.home", "not specified");
            System.out.println("  Your user home directory is: " + s);

            System.out.println("About to get java.home property value");

            s = System.getProperty("java.home", "not specified");
            System.out.println("  Your JRE installation directory is: " + s)

通过正常的编译执行: java GetProps 是可以全部得到属性的。

About to get os.name property value
  The name of your operating system is: Windows 7
About to get java.version property value
  The version of the JVM you are running is: 1.7.0_71
About to get user.home property value
  Your user home directory is: C:\Users\AlbertSnow
About to get java.home property value
  Your JRE installation directory is: D:\Program Files\Java\jdk1.7.0_71\jre

采用安全模式运行

用:  java -Djava.security.manager GetProps
(-D,这个参数用于设置系统的键值对;改命令使Java运行在安全机制下)

About to get os.name property value
  The name of your operating system is: Windows 7
About to get java.version property value
  The version of the JVM you are running is: 1.7.0_71
About to get user.home property value
Caught exception java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")

Security-Sensitive Properties:(安全敏感性属性)

当程序运行时,系统会加载默认的policy file(策略文件)并赋予所有代码,访问普通属性的权限。"os.name","java.version" 之所以可以显示是因为他们不是安全敏感性的属性。

“user.home”、 “java.home"不在系统policy file赋予代码读权限的属性。

系统默认的Policy file:

  • Windowsjava.home\lib\security\java.policy
  • UNIXjava.home/lib/security/java.policy

java.home是指安装jre的目录

创建自定义的PolicyFile:

1.在cmd中打开policytool

2.跟记事本一样在C:/Test/下创建PolicyFile: examplepolicy

进行授权:

cmd中打开policytool

CodeBase是授权对象以URL的格式。如果GetProps.java在C:/Test文件下,CodeBase就是:file:/c:/Test/

SignedBy就是要授予的权限:java.util.PropertyPermission java.home,"read"  (选完以后的格式)

使用该PolicyFile的授权在安全模式下运行:

方法1:

java -Djava.security.manager -Djava.security.policy=examplepolicy GetProps

(注意:在C:/Test/文件夹下运行,否则找不到这个文件了)

方法2:

D:\Program Files\Java\jdk1.6.0_43\jre\lib\security\java.security

java.security文件相当于一个配置文件,java会自动载入:

填写一个键值对:

policy.url.3=file:/C:/Test/examplepolicy

就ok了,注意那个数字 3,是从现有的数字往下递推的。如果现有最大是4,那你就写5

运行时:

java -Djava.security.manager GetProps

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 17:00:01

Java Security安全系列文档翻译笔记————PolicyFile的相关文章

Java Security安全系列文档翻译笔记————数字签名、keystore、证书

Digital Signatures数字签名 1.Private Key(私钥)签名一个文档,生成一个Digitial Signature(数字签名). Private key通过keytool(SDK中的工具)或Security API方法,通过jarsigner工具或Security API方法生成Digitial Signaturre: 2.将于私钥对应的Public Key(公钥) 和 文档发送给接收方(私钥和公钥是对应的) 4.再通过Public Key验证文档是否未经过改动,和确定是

[转]Java多线程干货系列—(一)Java多线程基础

Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4

Java学习的一些基础笔记

classpath.;%java_home%\lib;%java_home%\lib\tools.jar;D:\Java\;java_homeD:\Program Files\Java\jdk1.8.0_51pathC:\Users\BaseKing-Sunie\AppData\Local\Code\bin;%java_home%\bin;%java_home%\jre\bin;D:\adt-bundle-windows-x86_64_20131020\sdk\tools;D:\adt-bund

Java总结篇系列:java.lang.Object

从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解. Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java中最基本的类java.lang.Object开始谈起. Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为, 是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包

Java学习-050-AES256 之 java.security.InvalidKeyException: Illegal key size or default parameters 解决方法

在进行 Java AES 加密测试时,出现如下错误信息: java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026) at javax.crypto.Cipher.implInit(Cipher.java:801) at javax.crypto.Cipher.chooseProvider(Cip

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Java的垃圾回收机制笔记

Java的垃圾回收机制笔记 java垃圾回收的意义 确保不再被引用的对象的内存空间被回收. 确保被引用的对象的内存不被错误回收. 再分配内存. java垃圾回收的常用方法 引用计数收集器 堆中的每个对象(不是对象的引用)都有一个引用计数.当一个对象被创建时,给该对象分配一个变量,该变量计数设置设置为1.当任何其他变量被赋值为这个对象的引用,计数加1(a=b,则b引用的对象计数+1),但当一个对象的某个引用超过生命周期或者被设置为一个新值的时候,引用的计数减1(a=c,则a不再指向b指向的对象,而

Java Security:keytool工具使用说明

Keytool用法说明 Keytool是一个key与cert的管理工具.使用keytool可以管理public key.private key,以及与key之相关的certificate. 1.command和option说明 1.1 command 使用keytool工具时,可以使用15种命令: 1.2 option Option是命令的参数,要了解某个命令的参数可以使用keytool –command_name –help来获取.例如:使用keytool –genkeypair –help可

Java Se:Java Security

Java API中有很多都使用了SecurityManager,这到底是什么玩意?最近看公司的产品的源码,也有不少SecurityManager.AccessControlContext等相关的代码,只是知道它们与安全有关,但是它们到底是怎么一回事呢?Spring也有一个Security框架,与Java Security有什么关联呢?另外有经验的开发人员调试程序时可能会查看ProtectionDomain.CodeSource,这两者又是什么呢? Java Sandbox 提到Java Secu