正在确定事件处理程序'SpiderMonkey编译器入口点的安全主体

Determining event handler's security principal at the SpiderMonkey compiler entry point

本文关键字:入口 编译器 SpiderMonkey 主体 安全 事件处理 程序      更新时间:2023-09-26

目前,SpiderMonkey的nsJSContext::CompileEventHandler函数编译具有null主体的事件处理程序。因此,在Spidermonkey的前端::CompileFunctionBody函数中,目前没有办法将主体与事件处理程序相关联。稍后,在nsScriptSecurityManager::CheckFunctionAccess中确定事件处理程序函数的主体
我的问题是,是否可以在编译器的入口点检测到事件处理程序的安全主体?我的直觉如下:通常事件处理程序附加到DOM元素,其主体是容器文档。是否存在由容器文档以外的单独主体调用事件处理程序的情况?如果上述情况成立,事件处理程序的主体是否可以根据前端::CompileFunctionBody函数的"filename"属性确定(例如,chrome://URI表示系统,http://URI表示非系统)
(顺便说一句,我们如何检测about的主体:协议文档?有时它们是"系统",有时不是)

单个事件处理程序可以在具有不同主体的文档之间共享(例如通过XBL),因此在编译时您真的不知道主体。在执行处理程序之前,会使用正确的主体对其进行克隆。