Java安全:政策与许可管理

开发者在线 Builder.com.cn 更新时间:2007-04-29作者:开发者在线 来源:

本文关键词: javatrend 政策 许可 安全 安全 安全 Java JAVA JAVA java java Java

深入理解Java安全模型

关键词:JAVA

上周,我们仔细研究了Java安全模型的结构。本周,我又深入研究了Java安全机制的另一个方面,也就是安全管理、访问控制器和访问许可。

安全管理器

安全管理是一个特别的类型,它指出一类允许访问的资源(例如,文件访问或者网络连接)。做出是否允许访问的决定,安全管理器需要分析发出请求的来源。如果访问被拒绝,将产生一个Java安全异常(java.lang.SecurityException)。否则,将以正常的方式进行调用。

每一个Java虚拟机(Java Virtual Machine)进程都只允许存在一个安全管理器。另外,您可以配置JVM,这样就可以使JVM创建安全管理器后,不再允许替换安全管理器。在这种情况下,一个安全管理器将存在于JVM的整个生命周期。许多JVM中嵌入了浏览器,它能在第一个Java程序下载到它里面之前创建一个单个的安全管理器。这样的话,电脑黑客就不能用后来的未经授权访问系统资源的Java程序来替换Web浏览默认的安全管理器了。

使用Java 2比使用以前的版本,更容易创建定制的安全管理器,因为您可以在Java 2中配置默认的安全管理器。如果您想使用默认的安全管理器,就要利用系统特性了,可以在命令行方式下让JVM知道您的决定。它必须以下面的方式进行设置:

    java –Djava.security.managerMyApplication
    java –Djava.security.manager=default MyApplication

java.lang.SecurityManager类是一个允许应用程序实现安全策略的抽象类,它为正在运行的JVM提供安全策略。Java.lang.System.getSecurityManager()方法将一个引用返回到当前的SecurityManager对象中。如果它不存在,则返回一个NULL值。您可以调用java.lang.System.setSecurityManager()方法设置您自己的安全管理器。如果它被禁止安装新的安全管理器,就会抛出SecurityException异常。

SecurityManager类包括许多以checkXXX()命名的public方法。每一个方法都要检查相应的资源是否被允许访问;如果它被拒绝,则要抛出SecurityException异常。

checkPermission()方法与所有的checkXXX()方法相关联。在Java 2中执行,调用任何checkXXX()方法都会调用checkPermission()这个方法。checkPermission()方法会在java.security.AccessController类中去调用同名的方法。

用户评论

  • 用户名
  • 评论内容

开发者在线 许可 最新报道