JAVA和.NET两个平台对于安全功能的比较
第一部分是安全配置和代码封装
安全配置
这两个平台的配置是通过XML或纯文本文件实现的。两个平台的区别在于处理安全配置系统的方式不同。
在。NET平台下,修改安全配置参数有两种方式:图形界面和命令行。Mscorcfg.msc是图形界面模式,Caspol.exe提供了命令行模式,适合批量处理或者配置文本。
JAVA平台只提供图形界面工具policytool.exe。不像。NET中,其目标对象(配置文件)的名称和位置是不固定的。
。NET定义了不同范围的安全配置文件:系统范围、本地范围和本地用户范围。在配置冲突的情况下,原则上小范围的参数优先。
JAVA和J2EE的核心配置文件保存在固定的位置,但是扩展配置文件因制造商而异。
代码封装:检查
JAVA和。NET公共库运行时(CLR)实现内存安全或类型安全保护机制,也可以检查在这些平台上开发的应用程序的安全性。它们的实现机制非常不同。
英寸NET中,CLR总是执行编译后的代码,而不是解释代码。但是在编译中间语言(IL)之前,编译器会有验证和校验的步骤。第一步是检查文件的结构和代码完整性;第二步包括一些扩展检查,如内存安全、堆栈跟踪、数据流分析、类型检查等。在运行阶段,虚拟执行系统负责安全检查和意外错误的处理。
在JAVA平台上,JAVA虚拟机负责加载、链接、检查和执行类。对于编译优化后的代码,JVM还使用两个无条件调用栈来保留原始的字节码信息。
总结:不像。NET中,JVM的默认设置是不检查本机代码。此外,JVM保留原始字节码用于运行时检查,而。NET将静态分析与运行时插入检查代码结合起来。
代码封装:应用程序隔离
英寸NET中,域隔离是基于内存安全机制的。不同的域不能直接访问彼此的地址空,只能通过。NET远程通信机制。
在JAVA平台上,应用隔离是通过结合类加载器和保护域来实现的,安全类加载是JVM安全机制的基石。
摘要:的AppDomains。NET和操作系统的进程一样,比JAVA的ProtectionDomains更直接,更容易使用。
代码封装:语言特性
这两个平台基本相似,而且。NET在灵活性上略胜一筹。
总结:
JAVA在安全配置方面有很多优势,而。NET在代码封装方面有更好的选择性和易用性。
位律师回复
0条评论