Java安全
安全管理器
Java安全管理器是一个Java安全模型中的一个组件,主要的作用是提高Java应用程序的安全性。Java应用程序中的每个线程都会对安全管理器进行检查,在执行代码之前,会先经过安全管理器的核验,安全管理器根据代码来源和代码执行权限等因素对代码进行审核和管理,以确保应用程序不会做出危险的行为。
安全管理器的主要作用如下:
- 控制Java程序的访问权限:Java安全管理器可以设定哪些资源可以被一个Java程序访问,哪些资源不能被访问等访问权限,从而保证程序运行时资源的安全性。
- 控制Java程序的执行权限:Java安全管理器可以控制Java程序在运行时的执行权限,如可以对Java程序的权限进行限制,禁止它们进行某些操作,从而保障程序的执行安全。
- 权限管理:Java安全管理器可以管理用户的权限,如授权用户访问资源,确保用户的访问行为不会对资源造成风险,同时保护用户的信息安全。
安全沙箱的实现取决于:
安全管理器
- 安全管理器提供的机制,保证API与安全执行的操作是否被允许
存取控制器
- 安全管理器默认实现的基础
类装载器
- 安全策略和类的封装
安全管理器的概述
最重要的是提供定义安全策略,所有程序都需要在安全策略的基础上实现操作。
Java沙箱的大部分参数都是由安全管理器确定的,安全管理器的作用就是最终决定允许哪些操作可以执行。
如果java程序需要打开一个文件,是由安全管理器确定是否能够实现这个操作。
安全管理器和javaAPI
安全管理器的操作
安全管理器的方法
文件访问有关的方法
checkRead(String file)
:检查是否可以读取指定文件资源。如果当前代码没有读取该文件的权限,则此方法将抛出 AccessControlException 异常。checkWrite(String file)
:检查是否可以写入指定文件资源。如果当前代码没有写入该文件的权限,则此方法将抛出 AccessControlException 异常。checkDelete(String file)
:检查是否可以删除指定文件资源。如果当前代码没有删除该文件的权限,则此方法将抛出 AccessControlException 异常。checkPermission(Permission perm)
:检查是否已授予指定的权限。当涉及到文件 I/O 权限时,这个方法将检查权限是否有权访问给定的文件或文件夹。checkExec(String cmd)
:检查是否可以执行指定命令。这个方法在使用 Java Runtime 类的 exec() 方法时非常有用,可以在运行命令之前检查是否有权运行命令。checkPropertiesAccess()
:检查是否可以访问系统属性。这个方法在 Java 应用程序试图读取或修改 Java 系统属性时非常有用。
网络相关的方法
保护java虚拟机的方法
保护程序线程的方法
java执行很大程度依赖于线程。