JAVA 安全性 -- 沙箱机制

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

安全性 沙箱机制

1.       类装载器

a)         防止恶意代码干涉善意代码

通过为由不同的类装载器装入的类提供不同的命名空间来实现

b)        守护了被信任的类库的边界

通过分别使用不同的类装载器装在可靠的包和不可靠的包来实现

c)        将代码归入某类(保护域),该类确定了代码可以进行哪些操作

2.       Class 文件校验器

a)         类装载时,检验 class 文件的内部结构,以保证它可已被安全地编译

例如:文件是否是以 0xCAFEBASE 开头的

         文件有没有删节,尾部是否有附带的其他字节

该趟扫描的主要目的:保证这个字节序列正确地定义了一个新类型,他必须遵从 Class 文件的固定格式

b)        类型数据的语义检查

查看每一个组成部分,确认它们是否是其所属类型的实例,它们的结构是否正确。例如:方法描述符

检查该类必须都有一个超类(除了 Object 外)。

Final 类没有被子类化、以及 final 方法没有被覆盖

常量池中的条目是否合法

c)        检验 class 文件字节码的完整性验证

字节码 --- 操作码

d)        确认被引用的类、字段以及方法的确是存在。

以上 bcd 三趟扫描是针对方法区中的扫描

3.       JVM 内置安全特性(在 CLASS 文件检验器第四趟之前)

a)         类型安全的引用转换

b)        结构化的内存访问(无指针算法)

c)        自动垃圾收集

d)        数组边界检查

e)         空引用检查

4.       安全管理器以及 JAVA API

前三点主要是保护应用程序内部的完整性

安全管理器是保护虚拟机的外部资源不会被虚拟机内部的恶意或有漏洞的代码侵犯。

 

类装载器请求另一个类装载器来装在类型的过程 -> 双亲委派模式

除了启动类装载器以外的每一个类装载器,都有一个‘双亲’类装载器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值