• 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 访问控制器

  • 相关阅读:
    Android框架: MVC MVP MVVM
    Apache Tomcat -8.0.45
    【MySQL】Database connections will be migrated
    MySQL(mysql-installer-community-5.7.18.1 Windows10)
    代码版本控制(Source Control)
    HTML 5
    微信小程序
    Android Studio 2.3.3 安装
    React Native
    2018面向对象程序设计(Java)第12周学习指导及要求
  • 原文地址:https://www.cnblogs.com/yujy/p/2974050.html
Copyright © 2020-2023  润新知