`

SecurityManager安全管理器

 
阅读更多
权限设定文件F:/my.policy类容如下:
grant{
	permission java.io.FilePermission "F:/*", "read";
};

作用:在应用程序中访问F:盘符下的所有文件时只能读取不能写入。
在这里其实有很多的权限设定如:
  • AllPermission
  • BasicPermission
  • FilePermission
  • SocketPermission
在BasicPermission下还有很多的细分的子权限。详细设置请查看java核心技术卷二  第8版 第669页
		System.setProperty("java.security.policy", "F:/my.policy");//设置权限定义文件位置
		System.setSecurityManager(new SecurityManager());//安装权限管理,从此处开始生效
		FileOutputStream out = new FileOutputStream("f:/temp.sql",true);
		out.write("test".getBytes());
		out.flush();

执行上述代码会出现如下异常:
Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission f:\temp.sql write)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkWrite(SecurityManager.java:962)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
	at org.plugbase.util.Test.main(Test.java:28)

底层实现原理解析:
下面是FileOutputStream构造函数的方法:
    public FileOutputStream(File file, boolean append)
        throws FileNotFoundException
    {
        String name = (file != null ? file.getPath() : null);
	SecurityManager security = System.getSecurityManager();
	if (security != null) {//判断是否安装了安全管理器默认下是不安装的
	    security.checkWrite(name);//如果安装了进行检查如果检查未通过将会抛出异常
	}
        if (name == null) {
            throw new NullPointerException();
        }
	fd = new FileDescriptor();
        this.append = append;
	if (append) {
	    openAppend(name);
	} else {
	    open(name);
	}
    }

checkWriter方法中的代码
    public void checkWrite(String file) {
	checkPermission(new FilePermission(file, 
	    SecurityConstants.FILE_WRITE_ACTION));//这是在检查FilePermission中的安全设置,在my.policy中已经设置为read
    }
分享到:
评论

相关推荐

    SecurityManager使用

    在Java编程语言中,`SecurityManager`(安全管理器)是一个重要的安全组件,它允许开发者对应用程序的安全性进行精细控制。`SecurityManager`是Java虚拟机(JVM)的一部分,用于实施一套安全策略,以防止代码执行...

    CGB_面试题_第三阶段(1).docx

    (2)Subject 在 Shiro 框架内部调用 Shiro SecurityManager 安全管理器。 (3)安全管理器调用 Realm 对象,来连接安全数据。 Spring 框架提供了一个灵活、强大和可扩展的基础结构,用于构建企业级应用程序。通过...

    dappFinance#Note#【Java多线程】安全管理器SecurityManager1

    创建安全管理器利用安全管理器public static void main(String args[]){方法调用此方法时,返回所有新创建的线程实例化后所在的线

    浅谈shiro的SecurityManager类结构

    Apache Shiro 是一个强大...理解其类结构和职责对于正确地集成和使用 Shiro 进行安全管理至关重要。在设计和实现应用的安全策略时,应确保充分利用 `SecurityManager` 的功能,以实现高效、灵活且易于维护的安全机制。

    Oracle企业管理器(Enterprise Manager) OEM的体系结构

    * SecurityManager(安全性管理器):使用户能够管理用户、角色、权限及 profiles。 * StorageManager(存储管理器):允许用户创建和修改表空间、数据文件和回滚段。 * InstanceManager(实例管理器):允许用户...

    权限管理框架学习-shrio.ppt

    * SecurityManager:即安全管理器,对全部的Subject进行安全管理,是Shiro的核心,负责对所有的Subject进行安全管理。 * Realm:即领域,相当于datasource数据源,SecurityManager进行安全认证需要通过Realm获取用户...

    39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot】

    Spring Boot以其简洁的配置和快速的应用开发能力而闻名,而Shiro则是一个强大的安全管理框架,提供了认证、授权、会话管理和安全加密等功能。通过结合两者,我们可以构建一个高效且易于维护的安全系统。 首先,我们...

    Java安全权限控制机制研究综述.pdf

    Java安全管理器(SecurityManager)是Java中的一种安全机制,允许应用程序实现安全策略。它包含了很多名称以单词check开头的方法,Java库中的各种方法在执行某些潜在的敏感操作前可以调用这些方法。安全管理器通过抛...

    ShiroDemo.rar

    Shiro安全框架,整合了springboot项目,作为认证和授权两大功能 ... SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

    Java2平台安全技术

    权限对象代表特定的操作,保护域包含了拥有这些权限的代码,而安全管理器是执行权限检查的组件。 API设计在Java2平台安全技术中扮演着关键角色。Java提供了丰富的安全相关的API,如java.security包下的Permission、...

    java之jvm学习笔记十一(访问控制器)-源码

    Java安全模型基于一种称为安全管理器(SecurityManager)的机制,它是Java平台上的一个关键组件。当应用程序被加载时,如果系统设置了SecurityManager,那么JVM会根据这个安全管理者来执行一系列安全检查,确保代码...

    java安全性编程教案(java)

    开发者可以通过定制安全管理器和安全策略文件来细化安全控制。安全策略文件定义了哪些代码可以从哪些来源获取权限,以及这些代码可以执行哪些操作。 五、异常处理与权限检查 在进行敏感操作时,Java会抛出`...

    Shiro原理+配置

    SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Realm: Realm充当了Shiro与应用安全数据间的"桥梁"或者"连接器"。也...

    Java2平台安全技术-结构,API设计和实现

    3. java.lang.SecurityManager:这是安全管理器的实现类,通过设置System属性`java.security.manager`,可以启用安全管理器。 4. java.security.AccessController:在需要进行安全性检查的地方,会调用Access...

    springboot整合Shiro框架,实现用户权限管理

    SecurityManager:安全管理器 Shiro架构中最核心的组件,通过它可以协调其他组件完成用户认证和授权。实际上,SecurityManager就是Shiro框架的控制器。 Realm:域对象 定义了访问数据的方式,用来连接不同的数据源...

    代码实例-基于Java的两个通用安全模块的设计与实现.rar

    开发者可以通过实现`java.lang.SecurityManager`类来创建自定义的安全管理器。 4. Java Security API:这是Java提供的用于实现安全功能的一组接口和类,包括证书、密钥管理、加密算法、安全协议等。 压缩包内的...

    Java安全模型acegi

    3. 安全管理器:Java的`java.lang.SecurityManager`是实现安全策略的关键组件。当安全管理器被启用时,它会执行权限检查,决定是否允许执行特定操作。开发者可以通过自定义安全管理器实现更复杂的策略。 4. 类加载...

    SecurityManager:安全管理人员和程序开发人员可以肯定地确定了安全代理人的干部操作。daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org 临时临时雇员(SSIAP 1)和主要工作人员在指示点,计划,评估和自给自足方面提供了多种主要的电子服务。 J'aidécidédedévelopperma适当的申请书dans le bu

    安全管理人员和程序开发人员可以肯定地确定了安全代理人的干部操作。daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org 临时临时雇员(SSIAP 1...

    JAVA2平台安全技术

    - **java.lang.SecurityManager**:安全管理器的实现类,可以通过设置系统属性`System.setSecurityManager()`来启用。 3. **实现**: - **权限管理**:Java通过`Permissions`对象表示特定操作的权限,`Access...

    基于SpringBoot与Shiro整合实现的一个简单权限管理系统源码+项目说明.zip

    SecurityManager : 安全管理器(关联 Realm) Realm :Shiro 连接数据的桥梁 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、...

Global site tag (gtag.js) - Google Analytics