zoukankan      html  css  js  c++  java
  • 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方法则用于判断对文件访问权限。一旦发现没有权限都会抛出安全异常。

  • 相关阅读:
    跨域 jQuery库ajax请求
    跨域 响应请求
    跨域 XMLHttpRequest对象
    跨域 概述
    【网易官方】极客战记(codecombat)攻略-地牢-Kithgard 橱柜 A
    【网易官方】极客战记(codecombat)攻略-地牢-橱柜里的骷髅
    【网易官方】极客战记(codecombat)攻略-地牢-逃脱
    【网易官方】极客战记(codecombat)攻略-地牢-攻破突袭
    【网易官方】极客战记(codecombat)攻略-地牢-恐惧之门
    【网易官方】极客战记(codecombat)攻略-地牢-辐射光环
  • 原文地址:https://www.cnblogs.com/laoxia/p/7954011.html
Copyright © 2011-2022 走看看