《Java安全性编程指南》—第7章 核心Java安全模块和Applet安全(2)

Java安全管理器

    Java安全管理器处理必要的权限检查。缺省的实现是Java.lang.SecurityManager类中,如有必要可以派生出子类或取代之。对于不安全的行为,Java就会强制安全管理器进行安全检查。

安全管理器是如何工作的:

  1. 你的代码调用需要权限的代码,如new FileInputStream("filename")
  2. 那代码就会调用安全管理器检查权限
  3. 安全管理器决定权限是否允许。这通常(而不是必须的)会与java.security.AccessController交互。如果没有权限,就会出现运行异常:java.lang.SecurityException,否则不会返回异常而正常运行。安全管理器会监督整个执行线程已确保每个类都有相应权限。
  4. 如果没有异常,说明有足够的权限,程序将继续正常运行。

设置安全管理器有2个常用的方法

  1. 执行命令    java -Djava.security.manager FileWriteTest
  2. 程序中指定

           SecurityManager security = new SecurityManager();
           System.setSecurityManager(security);

 

Java.policy文件

    某些权限必须赋予类,这是在java.policy文件中定义,java.policy文件保存在目录$JAVA_HOME/jre/lib/security中。

 

Java中的权限

    Java本身定义了许多权限,顶层类包括:

  • java.security.AllPermission—对所有文件都有的全部权限
  • java.security.BasicPermission—大多数简单权限的超类
  • java.io.FilePermission—文件读写权限
  • java.net.SocketPermission—打开连接远程计算机的包,并用DNS解析主机名

BasicPermission有许多派生类定义其他权限

  • javax.sound.sampled.AudioPermission—访问音频函数的权限,如播放、录音等。
  • javax.awt.AWTPermission—与图形有关的行为的权限,比如访问剪贴板或读AWT事件。
  • java.net.NetPermission—处理URL的权限,必然增加一个口令认证。
  • java.util.PropertyPermission—读写系统属性的权限。
  • java.lang.reflect.ReflectPermission—使用reflection的权限。
  • java.lang.RuntimePermission—运行时安全元素的权限,比如设置类装载器或安全管理器。
  • java.security.SecurityPermission—安全元素的权限,像安全策略和加密服务。
  • java.io.SerializablePermission—读写可序列化对象的权限。
  • java.sql.SQLPermission—设置SQL日志的权限。

你可能感兴趣的:(java,sql,编程,.net,Security)