一、 简介
Javacard跨越上下文的对象访问。Javacard防火墙将一个applet的运行限定在它的被指定的上下文中。为了允许applet与其它的applet或JCRE进行交互,Javacard提供了一个上下文可以访问一个属于另一个上下文的对象。
提供了以下四种安全机制:
- JCRE入口点对象
- 全局数组
- JCRE特权
- 共享接口
二、JCRE入口点对象
安全的Javacard系统中提供一种方法,使得非特权的用户(被限制在资源的一子集中)能够请求系统服务,这些服务将由“JCRE入口点对象”来完成。这些JCRE是属于JCRE上下文的,但是它们被标识为入口点方法。
防火墙允许来自applet的对这些“JCRE入口点对象”的方法的访问(只有JCRE入口点对象的方法是通过防火墙进行访问的,这些对象的域仍然是被防火墙保护的,并且只能通过JCRE上下文进行访问)。入口点的指定允许这些对象的方法可以从任何上下文被调用。当调用发生时,当前上下文将切换到JCRE上下文。
JCRE入口点对象有两种:
1、 临时的JCRE入口点对象
特点:可以从任何一个上下文中被调用。但是,这些对象的引用不能被存储在类的变量、实例变量或数组元素中。但是存储在本地变量(例如方法中定义的局部变量)是允许的。
例子:
APDU对象和所有的JCRE自己的异常对象是临时JCRE入口点对象。比如,APDU对象从applet的process方法参数传进来,applet就可以使用APDU对象的任何方法来服务。