Java安全管理器和API,写给想学又没时间看的人

前言

这一周因为一直在赶自己的项目,没怎么继续更新,主要是在自己的CSDN博客上更新一些自己项目中的问题解决方案,因为跟业务比较靠边,头条还是偏娱乐的,如果感兴趣的可以去我饿CSDN博客上关注一下,下面说正事,今天继续介绍我们的虚拟机。

Java安全管理器和API,写给想学又没时间看的人

正文

安全管理器和Java API

Java安全模型的前三个部分——类装载器,class文件校验器以及Java自身的安全特性斜前面已经介绍完了,没看过的小伙伴可以去前面看一下,这三点都是为了保持Java虚拟机的实例和它正在运行的应用程序的正确性,使得不会被恶意下载的或者有漏洞的代码侵犯。

我们今天提到的安全管理器是一个单独的对象,在运行的Java虚拟机中,它在对于外部的资源访问控制中起到了中枢的作用。

安全管理器定义了沙箱的外部边界,它属于可定制的,所以允许为程序建立自定义的安全策略,当Java API进行任何不安全的操作时,它都会向安全管理器请求许可,从而强制执行自定义的安全策略,要向安全管理器请求许可,Java API将会调用安全管理器对象的“check”方法,这些方法的实现定义了应用程序的定制安全策略。

Java API在进行一个可能不安全的操作前,总是检查安全管理器,所以API不会再安全管理器建立的安全策略之外做事,安全管理器禁止的事,API就执行不了。

当Java应用程序启动时,它是没有安全管理器的,应用程序需要自己调用方法来启动安全管理器,如果没有安装安全管理器,那么就不会对API作出限制。

一般来说,一个受检查的动作被禁止,安全管理器的“check”方法将会抛出异常,如果这个动作被允许,则简单的返回。,当一个Java API即将执行一个潜在的不安全的动作时,它将会遵循以下两个步骤,首先看有没有安装安全管理器,如果没有,则跳过继续执行这个安全的动作,否则,它将会调用安全管理器中的“check”方法,如果操作被禁止,那么API久立即停止这个不安全的动作,如果被允许,那么这个“check”方法将简单的返回,API继续执行这个方法。

虽然安全管理器的可配置性是Java安全模型的最大优点之一,但它也是一个潜在的弱点,编写一个安全管理器是一项复杂的任务,并且可能导致错误,在实现安全管理器的check方法时,任何错误都将编程运行时的安全漏洞,所以。Java虚拟机在后来提供了一个默认的安全管理器,用户的应用程序可以显式的实例化并安装这个安全管理器,或者让他自动安装。

目目目录 前言 第1章 计算机与网络安全基础 1 1.1 密码学与计算机安全 1 1.2 危险和保护 2 1.3 外围防护 3 1.3.1 防火墙 4 1.3.2 仅仅使用外围防护的不足之处 4 1.4 访问控制与安全模型 4 1.4.1 MAC和DAC模型 5 1.4.2 对数据和信息的访问 5 1.4.3 静态和动态模型 6 1.4.4 关于使用安全模型的几点考虑 6 1.5 密码系统的使用 7 1.5.1 单向散列函数 7 1.5.2 对称密码 8 1.5.3 非对称密码 9 1.6 鉴别 9 1.7 移动代码 10 1.8 Java安全性的适用范围 11 第2章 Java语言的基本安全特点 12 2.1 Java语言和平台 12 2.2 基本安全结构 13 2.3 字节代码验证和类型安全 14 2.4 签名应用小程序 15 2.5 关于安全错误及其修复的简要历史 16 第3章 JDK1.2安全结构 19 3.1 起源 19 3.2 为什么需要一个新型的安全结构 19 3.2.1 关于applet的沙盒模型的局限性 19 3.2.2 策略和实施分离的不彻底性 20 3.2.3 安全核查的不易扩展性 20 3.2.4 对本地安装的applet过于信任 20 3.2.5 内部安全机制的脆弱性 21 3.2.6 总结 21 3.3 java.Security.General SecurityException 21 3.4 安全策略 22 3.5 CodeSource 24 3.5.1 测试等同性和利用隐含 25 3.6 许可权层次 26 3.6.1 java.security.Permission 27 3.6.2 许可权集合 28 3.6.3 java.security.Unresolved Permission 29 3.6.4 java.io.FilePermission 31 3.6.5 java.net.SocketPermission 33 3.6.6 java.security.BasicPermission 35 3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt.AWTPermission 38 3.6.10 java.net.NetPermission 38 3.6.11 java.lang.reflect Reflect Permission 39 3.6.12 java.io .Serializable Permission 39 3.6.13 java.security.Security Permission 39 3.6.14 java.security.AllPermission 40 3.6.15 许可权隐含中的隐含 40 3.7 分配许可权 41 3.8 Protection Domain 42 3.9 安全地加载类 44 3.9.1 类加载器的层次 44 3.9.2 java.lang.ClassLoader和授权 46 3.9.3 java.security.SecureClassLoader 49 3.9.4 java.net.URLClassLoader 49 3.9.5 类的路径 50 3.10 java.lang.SecurityManager 51 3.10.1 使用安全管理器的实例 51 3.10.2 JDK1.2中有改变的API 52 3.10.3 JDK1.2中禁用的方法 53 3.11 java.security.AccessController 56 3.11.1 AceessController的界面设计 57 3.11.2 基础访问控制算法 57 3.11.3 继承方法 59 3.11.4 扩展带有特权操作的基本算法 59 3.11.5 特权操作的三种类型 61 3.11.6 访问控制语境 63 3.11.7 完整的访问控制算法 64 3.11.8 SecurityManager与 AccessController 65 3.11.9 特权操作发展史 66 3.12 小结 67 第4章 安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值