基于cldc+midp的无线应用程序具有与生俱来的安全特性,这得益于java语言和java平台的安全机制。即使是有破坏性的程序也只能伤害到虚拟机层,不会伤害到手机操作系统。本文并不是要专门针对midp2.0的安全体系结构进行介绍,而是力图结合java语言、虚拟机等方面的安全设计谈谈无线应用的安全结构。
用过applet的程序员都知道沙箱这个词,它同样是为了确保安全。applet的运行需要从网络上下载到本地上来,在你确认它是否安全之前让它访问你的本地资源的话那将是非常危险的事情。因此java采用了沙箱的机制,让applet运行在一个受限的环境内。
由于j2se中的安全机制需要很大内存的支持,因此在j2me(cldc+midp)中并没有采取。在j2me中采用的是两层安全结构,包括底层的kvm安全机制和上层的应用程序安全机制。
在kvm的安全机制中,主要是通过class文件验证来确保安全的,一旦这个class文件是非安全的,比如它含有对危险内存空间的引用,那么kvm将不会运行它的。但是由于class文件在验证上比较消耗时间,因此kvm的设计人员把这部分工作移植到开发阶段了,我们看到源文件在编译后会被验证,你可以仔细看看ktoolbar的控制台输出。而在kvm里面做的验证都是简单的。
在应用程序层进行的限制主要是为了防止应用程序恶意破坏文件系统等设备。由于考虑到性能的问题,他没有采取securitymanager类的策略。因此与传统的沙箱不同的是,基于cldc/midp的沙箱模型作了如下的限制。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器