Answers:
看到
从本文:
...当前Java系统中使用的堆栈检查算法可以认为是以下简单堆栈检查模型的概括:
在此模型中,唯一的主体是“系统”和“不受信任”。同样,唯一可用的特权是“完整”。该模型类似于Netscape Navigator 3.0内部使用的堆栈检查系统。
在此模型中,每个堆栈帧都标有一个主体(如果该帧正在执行属于虚拟机或其内置库的代码,则为“系统”,否则为“不可信”),并包含一个特权标志,该标志可能由选择“启用其特权”的系统类设置,明确指出它要执行危险的操作。不受信任的类无法设置其特权标志。当堆栈帧退出时,其特权标志(如果有)自动消失。
有关执行危险操作(例如访问文件系统或网络)的所有过程都首先应用堆栈检查算法来确定是否允许访问。堆栈检查算法从最新到最旧依次搜索调用者堆栈上的帧。找到带有特权标志的堆栈帧后,搜索将终止,并允许访问。当找到不可信的堆栈帧(永远不会获得特权标志)时,搜索也会终止,禁止访问并引发异常。...