zoukankan      html  css  js  c++  java
  • java 安全方面的考虑简单

    参考 深入理解JVM

    1 双亲委派模型

    (1)防止不可靠的代码用自己的版本替代可信任的类。

    (2)运行时包的概念:同一个类装载的、属于同一个包的、多个类型的集合。

           加载java.lang.Virus这个非法的类,不能访问java.lang包中的API。

    2 class文件验证器

       第一趟在类被装载的时候进行,检查内部结构,保证可被编译。

       第二趟在连接过程中进行,语义检查,方法描述符符合特定字符串。

       第三趟在连接过程中进行,字节码验证

       第四趟在解析过程中进行,符号引用的验证

     

    CLassLoader类中loadClass的具体实现

    (1)查看请求的类装载器是否已经被装载进这个类装载器的命名空间。如果确实如此,返回这个已经装载的Class实例。

    (2)否则委派双亲类装载器,如果双亲返回,则返回这个Class实例。

    (3)否则,调用findClass(),findClass会试图寻找或生成一个字节数组。如果成功,findClass()把字节数组传递给defineClass,后者试着导入这个类型,返回一个Class实例。如果findClass返回了一个Class实例,loadClass()把这个实例返回。

    (4)否则,findClass抛出某些异常,loadClass返回同样异常。

     

    forName 和loadClass的区别?

    loadClass保证被装载的类型是被装载到用户自定义的类装载器的命名空间里,而forName确认所需的类型被装载到当前命名空间中,就是forName方法调用所属的定义类装载器的命名空间。

     

    3 内置的安全特性

       自动GC

       数组边界检查

       空引用检查

       类型安全的引用转换

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

    4 安全管理器

       保护虚拟机外的资源不被运行的恶意代码破坏

    5 代码签名和认证

    6 策略

    7 保护域

    8 访问控制器

  • 相关阅读:
    PHP中使用CURL实现GET和POST请求
    ecstore关于smarty语法调用
    Linux 定时任务详解
    fzu 1753 Another Easy Problem
    zoj 2562 More Divisors
    poj 2992 Divisors
    UVA10078多边形判断凹凸性
    UVA10002求凸包的质心
    UVA10088多边形内整点个数计算(计算几何)
    HDU 1824 简单2-sat
  • 原文地址:https://www.cnblogs.com/yujy/p/2974050.html
Copyright © 2011-2022 走看看