Java安全管理器
启动SecurityManager开关:
隐式:
启动时添加JVM启动参数:
-Djava.security.manager :启动默认的安全管理器;
-Djava.security.policy="E:/java.policy":指定安全管理器的配置文件;
显式:
实例化一个java.lang.SecurityManager或继承它的子类的对象,然后通过System.setSecurityManager()来设置并启动一个安全管理器。
System.setSecurityManager(new SecurityManager());
配置Policy文件:
JVM自带的Policy文件位于%JAVA_HOME%/jre/lib/security/java.policy;
Java.policy解析:
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
定义了系统属性${{java.ext.dirs}}路径(%JAVA_HOME%/jre/lib/ext)下的所有的class及jar拥有所有的操作权限;关于配置的路径说明:
directory/ :表示directory目录下的所有.class文件,不包括.jar文件;
directory/* :表示directory目录下的所有.class文件,不包括.jar文件;
directory/- :表示directory目录下的所有.class文件,不包括.jar文件;
grant {
permission java.io.FilePermission "d:/1.txt", "read";
};
表示给d:\1.txt文件赋予读的权限;
Demo:
public class SecurityManagerTest {
public static void main(String[] args)throws FileNotFoundException {
System.out.println("SecurityManager: " + System.getSecurityManager());
FileInputStreamfis = new FileInputStream("c:\\protect.txt");
System.out.println(System.getProperty("file.encoding"));
}
}
1、不添加任何参数运行,相当于没有启动安全管理器,程序运行正常;
2、添加启动参数:-Djava.security.manager-Djava.security.policy=c:/protect.policy
运行会报AccessControlException异常;
3、需要在protect.txt中添加授权语句:
grant {
permissionjava.io.FilePermission "c:/protect.txt", "read";
permissionjava.util.PropertyPermission "file.encoding", "read";
};
此时再运行则正常;
工作原理:

当应用程序要读取本地文件时,securitymanager就会在读取前进行拦截,判断是否有读取此文件的权限,如果有则顺利读取,否则将抛出访问异常。SecurityManager类中提供了很多检查权限的方法,例如checkPermission方法会根据安全策略文件描述的权限对操作进行判断是否有操作权限,而checkRead方法则用于判断对文件访问权限。一旦发现没有权限都会抛出安全异常。
Java安全管理器的更多相关文章
- java安全管理器SecurityManager入门
table { margin-left: 30px; width: 95%; border: 1px; border-collapse: collapse } img { border: 1px so ...
- java安全管理器SecurityManager介绍
java安全管理器类SecurityManager简单剖析: javadoc介绍: SecurityManager是一个允许应用实现一种安全策略的类.它允许一个应用去明确,在执行一个可能安全或者敏感的 ...
- java安全管理器SecurityManager
本文转载自java安全管理器SecurityManager 导语 这是一篇对Java安全管理器入门的文章,目的是简单了解什么是SecurityManager,对管理器进行简单配置,解决简单问题. 比如 ...
- Java安全管理器——SecurityManager
总的来说,Java安全应该包括两方面的内容,一是Java平台(即是Java运行环境)的安全性:二是Java语言开发的应用程序的安全性.由于我们不是Java本身语言的制定开发者,所以第一个安全性不需要我 ...
- Java RMI之HelloWorld程序以及相关的安全管理器的知识
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,可以让在某个 Java 虚拟机上的对象调用还有一个 Java 虚拟机中的对象上的方法.可以用此 ...
- 关于java中的安全管理器
最近再查看java的源码的时候看见了这一类代码 final SecurityManager sm = System.getSecurityManager(); 想要了解这个是为了做什么,查看资料之后发 ...
- 安全管理器SecurityManager
一.文章的目的 这是一篇对Java安全管理器入门的文章,目的是简单了解什么是SecurityManager,对管理器进行简单配置,解决简单问题. 比如在阅读源码的时候,发现这样的代码,想了解是做什么的 ...
- Java 类加载器(ClassLoader)
类加载器 ClassLoader 什么是类加载器? 通过一个类的全限定名来获取描述此类的二进制字节流这个动作放到Java虚拟机外部去实现, 以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代 ...
- java安全沙箱(四)之安全管理器及Java API
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...
随机推荐
- 让CLOVER默认引导WINDOWS
解决问题帖子: http://www.insanelymac.com/forum/topic/296000-force-clover-to-always-choose-win-81-efi-as-de ...
- SQL Server日志清空方法
1.清空日志:DUMP TRANSACTION databasename WITH NO_LOG 2.截断事务日志:BACKUP LOG databasename WITH ...
- 68. Text Justification *HARD*
Given an array of words and a length L, format the text such that each line has exactly L characters ...
- 使用iview-project 打包build报错,ERROR in xxxxx.cheunk.js from UglifyJs
一.iview-project 为iview官方推荐工程,一个基于iview的vue脚手架 github网址:https://github.com/iview/iview-project 废话不多说 ...
- win7 安装express
1.以管理员身份打开cmd(避免出错) npm install -g express-generator@4 Start the server: npm start 链接,github官网说明 htt ...
- utime修改文件的存取,修改时间
#include <sys/types.h> #include <utime.h> int utime(const char *filename, const struct u ...
- jenkins插件--Cobertura,JaCoCo,Emma-----(二)
代码覆盖API插件 Jenkins中有许多代码覆盖插件:Cobertura,JaCoCo,Emma等等.这些插件的问题在于它们每个都自己实现了所有代码覆盖功能.因此,您可以获得不同的功能集,UI,CL ...
- 封装ajax函数
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- 推荐八款.Net优秀的开源CMS 内容管理系统
1,老牌内容管理系统SiteServer CMS 推荐指数:5 SiteServer CMS 是.NET平台的CMS系统,也是一款拥有十年历史与广泛知名度的CMS系统,2017年5月初迈出了自成立以 ...
- 【DevExpress v17.2新功能预告】DevExtreme ASP.NET MVC新的强类型HTML Helpers
在ASP.NET MVC中构建视图时,强类型HTML helpers非常有用.像@Html.TextBoxFor(m => m.FirstName)这样内置的Helper方法已经存在很长时间了, ...