目前,SpiderMonkey 的nsJSContext::CompileEventHandler函数使用 null principals 编译事件处理程序。因此,在 Spidermonkey 的frontend::CompileFunctionBody函数中,目前无法将主体与事件处理程序关联起来。稍后,事件处理函数的主体在nsScriptSecurityManager::CheckFunctionAccess中确定。
我的问题是,可以在编译器的入口点检测到事件处理程序的安全主体吗?我对此的直觉如下:通常事件处理程序附加到 DOM 元素,其主体是容器文档。是否存在事件处理程序由与容器文档不同的主体调用的极端情况?如果以上为真,事件处理程序的主体是否可以从frontend::CompileFunctionBody函数的“文件名”属性中确定(例如,chrome:// URI 表示系统,http:// uri 表示非系统)?
(顺便说一句。我们如何检测 about:protocol 文件的主体?有时它们是“系统”,有时不是)
问问题
125 次