`
BucketLi
  • 浏览: 194295 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
5a76a659-f8e6-3bf3-b39a-8ae8f7a0f9d9
Percolator与分布...
浏览量:5651
社区版块
存档分类
最新评论

《深入java虚拟机2》之安全tips

 
阅读更多
发现有这么一本书在书架上,随便翻翻。

1.java的安全模型包括类装载体系、class文件4重校验、java内置安全特性、安全管理器和java api.

2.java类装载体系通过4个措施预防安全问题。
  (1)同一个命名空间(package)下只能加载一个相同类名的类。
  (2)委托父装载器优先加载防止非受信任类先于受信任类加载。
  (3)位于相同命名空间下(package)的类,jvm只授予使用相同classloader加载类具有包访问成员的权限。所以不要认为自定义一个java.lang.Virus就能够访问到java.lang下protected的成员或者包访问权限的成员。
  (4)黑名单策略,限定某些包可以加载。

3.class文件的4重校验。
 (1).class文件的结构检查,主要是校验文件本身的写作是否满足class文件的固定格式。
 (2).类型数据的语义检查,比如方法描述符(返回类型,参数类型和个数)字符串必须符合特定的上下文无关文法。
 (3).字节码验证,检查每一个字节码集合是否符合一个特定的规则集合。
  (4).符号引用验证,当一个class文件被加载的时候,它包含了对其他类的符号引用以及他们的字段和方法,jvm执行字节码时,如果遇到一个操作码,这个操作码第一次使用一个指向另一个类的符号引用,那么jvm必须解析这个符号引用,具体的操作包括1'查找被引用的类(还没装载就装载起来)2'将符号引用替换为直接引用,即将这个字符串替换为执行类、字段或者方法的指针或者偏移量。

4.java内置的安全特性
 (1).类型安全引用转换
  (2).结构化内存访问
  (3).gc
  (4).空引用检查

5.安全管理器
  java代码执行级别的权限控制,判定某个操作是否可以执行。具体的策略定义在一个固定文件中。但是貌似大家都不怎么用这个安全管理器,唯一使用的是AccessController.doPrivileged,而这个操作意图竟是使某些敏感执行绕过安全策略。
 
6.代码签名和认证
 java对于代码(class文件或者jar文件)输入进行散列计算,得到的散列值相当于这个代码的"指纹",发布后使用这份代码的时候,只要按相同算法对代码进行散列计算,得到散列值与原始散列值相同即认为代码没有在中间被篡改。但是存在一个问题是,原始输入和散列能够被很方便的替换掉,也能通过认证。那么可选择的应对方案就是对代码进行私钥加密,公钥解密。不过因为私钥对代码加密可能时间耗费比较久,就只对代码的散列进行私钥加密。在只有公钥的情况下要得到私钥是非常困难的,所以这种方案是比较安全的防篡改方式。除非另外一个输入产生的散列值和原始输入的散列值相同,那么私钥也不需要了,但是这个可操作性是比较低的,一个是因为原始输入包含大量数据,并且散列值就算是8位也有256种可能(2的8次方),普遍采用的64位和128位散列则有更多的可能。
 代码签名并不会对代码(class文件或者jar文件)进行加密,所有人都可能看见,而这个操作的意义在于让使用者准确判定这份代码有没有被中间篡改,从而确保代码执行按照可信任的作者意图安全执行。
分享到:
评论

相关推荐

    深入java虚拟机.pdf

    深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序执行的核心组件。它提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。 一...

    深入java虚拟机第二版

    java虚拟机不用多少了吧。 深入java虚拟机第二版.pdf

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    深入JAVA虚拟机 随书源码 JVM规范

    首先,我们来看《深入JAVA虚拟机》这本书,它涵盖了JVM的各个关键方面,包括指令集、运行时数据区、方法区、堆内存、栈帧结构、编译与优化、异常处理和安全性等。书中通过实例解析,帮助读者理解JVM如何处理Java程序...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...

    深入JAVA虚拟机.pdf

    深入JAVA虚拟机,帮助大家在Java方面进行学习,深入JAVA虚拟机,帮助大家在Java方面进行学习,

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...

    深入java虚拟机 高清pdf 高清高清高清

    《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...

    深入JAVA虚拟机第二版.pdf

    深入JAVA虚拟机第二版.pdf深入JAVA虚拟机第二版.pdf深入JAVA虚拟机第二版.pdf深入JAVA虚拟机第二版.pdf深入JAVA虚拟机第二版.pdf深入JAVA虚拟机第二版.pdf

    深入Java虚拟机(原书第二版清晰版) 中文版 Bill Venners PDF

    讲述java虚拟机 唯二的书。本书作者曾因本书荣获专业技术杂志《Java Report》评选的优秀...作者以易于理解的方式深入揭示了Java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益!

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    《深入JAVA虚拟机 不那么完美的第二版》这本书虽然在印刷上可能存在一些小瑕疵,但这并不影响我们从中汲取宝贵的Java虚拟机(JVM)知识。Java虚拟机是Java平台的核心组成部分,它负责执行Java程序,提供了跨平台的...

    深入java虚拟机

    非常详细的,非常经典的java虚拟机技术介绍,想要在Java上有所精进和深入一定要学,让我们一起成为大牛吧。

    深入java虚拟机第二版_完整目录.pdf

    《深入Java虚拟机第二版》是探讨Java虚拟机(JVM)内部工作原理的经典之作,作者Bill Venners通过本书深入浅出地解析了Java虚拟机的体系结构和内部机制,为Java开发者提供了编写高效程序的基础理论支持。 Java...

    深入Java虚拟机(原书第二版清晰版).

    《深入Java虚拟机(原书第二版清晰版)》这本书是为那些已经学习了Java编程语言,希望通过深入理解Java虚拟机(JVM)来进一步提升自己技术能力的Java程序员所准备的。本书详细介绍了JVM的内部工作机制,包括但不限于...

    深入JAVA虚拟机.part3.rar

    深入JAVA虚拟机.part3.rar

    深入Java虚拟机及其光盘内容2

    深入Java虚拟机中文版及其光盘内容

    深入java虚拟机最新版

    ### 深入Java虚拟机最新版:执行引擎与类加载机制详解 #### 执行引擎:一次探索之旅 Java虚拟机(JVM)的核心组件之一就是执行引擎,它负责将字节码转换为机器指令执行。在《深入Java虚拟机最新版》这本书中,我们...

    完美书签深入JAVA虚拟机第二版

    详解了java虚拟机的工作流,着重分析了java虚拟机的架构和原理

    深入Java虚拟机及附属光盘

    《深入Java虚拟机》是一本深受Java开发者喜爱的经典著作,它详细揭示了Java虚拟机(JVM)的工作原理,帮助开发者提升程序性能、理解和解决运行时问题。这本书的影印版以及附属光盘通常会包含一些补充材料,如源代码...

Global site tag (gtag.js) - Google Analytics