Firefox XPCOM 组件 - 调用方法 UnnamedClass 的权限被拒绝

2023-12-15

Firefox XPCOM 组件可以跨多个页面读写页面内容吗?

设想: 一堆本地 HTML 和 javascript 文件。 “Main.html”文件打开一个窗口“pluginWindow”,并使用以下命令创建一个插件:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var obj = Components.classes[cid].createInstance();
plugin = obj.QueryInterface(Components.interfaces.IPlugin);
plugin.addObserver(handleEvent);

该插件有 3 个方法。

IPlugin.Read- 从插件读取数据
IPlugin.Write- 将数据写入插件
IPlugin.addObserver- 添加用于读取的回调处理程序。

然后“Main.html”调用pluginWindow并尝试调用插件方法Write。

我收到一个错误:

Permission denied to call method UnnamedClass.Write


首先,你的 C++ 代码真的是plugin or an XPCOM组件,可能作为一部分安装扩大?看来是后者了

如果是这样,则无法从不受信任的 JS 代码(任何网页或本地 HTML 文件)使用它。它完全可以通过特权代码使用,其中最常见的类型是扩大 code.

您在使用创建组件时解决了这个问题enablePrivilege('UniversalXPConnect')称呼。这并不是真正推荐的,除非这不会分发给用户(因为此调用会弹出一个令人困惑的框,并且如果您设置首选项始终允许 file:// 脚本使用 XPCOM,则可能是一个安全问题,因为并非所有本地脚本页面是可信的 - 想想保存的网页)。

Your Write由于同样的原因,调用失败 - file:// 页面不被信任使用 XPCOM 组件。如果您添加另一个,您可能可以让它工作enablePrivilege调用与 Write 调用本身相同的函数。

根据具体情况,可能会有更好的解决方案。

如果您的文件必须被视为受信任,您可能需要将它们打包为扩展名并通过 chrome:// URL 访问它们。这使这些页面中的代码有权调用任何 XPCOM 组件,包括您的组件。

如果组件的方法可以从任何页面安全使用,或者环境受到控制并且浏览器中没有加载不受信任的页面,则可以使组件可访问内容(在莫兹拉代码举个例子,也为了nsISecurityCheckedComponent).

哦,当您在这里没有得到好的答案时,您一定应该尝试 mozilla 新闻组/邮件列表。

[编辑回复评论] 考虑将需要调用组件的代码放在 chrome:// 脚本中。或者,您应该能够使用以下代码“祝福”您的页面具有 chrome 权限this(请注意,它的作用与您所需的相反 - 剥夺了 chrome 权限)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox XPCOM 组件 - 调用方法 UnnamedClass 的权限被拒绝 的相关文章

随机推荐

  • 如何在swift中重载赋值运算符

    我想重写 CGFloat 的 运算符 如下所示 func inout left CGFloat right Float left CGFloat right 所以我可以执行以下操作 var A CGFloat 1 var B Float 2
  • SQL Server:计算每月总销售额,包括空月

    我正在尝试计算一个月内产品的总销售额 但我希望它包括任何 空 月份 没有销售额 并且仅选择最近 12 个月 这是我到目前为止的代码 declare ProductNo int set ProductNo 1234 SELECT YEAR o
  • 如何向 MySQL 表添加“权重”并根据这些权重选择随机值?

    我想创建一个表 每行都包含某种权重 然后我想选择概率等于 该行的权重 所有行的权重 的随机值 例如 如果有 5 行 权重为 1000 中的 1 2 3 4 5 我会得到大约 1 15 1000 67 倍第一行 依此类推 该表需要手动填写 然
  • 使用PowerShell查找字符串中的差异

    所以我正在使用 Compare Object 它对于比较文件效果很好 但如果只是字符串呢 有没有办法找出字符串之间的差异 CompareTo 擅长报告存在差异 但不报告差异是什么 例如 PS gt a PowerShell rocks PS
  • Numpy 结构化数组无法完成基本 numpy 操作

    我想操纵namednumpy 数组 加 乘 连接 我定义了结构化数组 types name1 int name2 float a np array 2 3 3 dtype types b np array 4 5 35 dtype type
  • pandas 有没有办法从系列中删除重复项?

    我有一个数据框在 标签 列中有一些用逗号分隔的重复标签 有没有办法从系列中删除重复的字符串 我希望 400 的输出只有博物馆 饮酒 购物 我无法用逗号分割并删除它们 因为该系列中有一些标签具有相似的单词 例如 博物馆 艺术博物馆 购物 因此
  • 下载已部署的GAE应用程序的源代码

    如果我的硬盘上丢失了已部署应用程序的源代码 我可以下载该应用程序的源代码吗 我浏览了应用程序仪表板 但找不到任何选项来检查它 不 您不能 并且没有计划提供此类功能 抱歉 下次考虑投资 VCS 和备份
  • 如何访问AWS Lambda中的标头?

    我正在使用 AWS Api 网关 我已经使用 API Gateway 创建了资源和方法 我创建了 Lambda 函数 用于生成 json 格式的签名 URL 以通过 CloudFront 访问 s3 存储桶 当我使用 GET 方法调用 la
  • CMYK 值作为背景颜色

    我必须使用 RGB 值设置 div 的背景颜色 我能做到这一点 div style width 100px height 100px background color rgb 255 0 0 div 现在 由于我也有 CMYK 0 1 0
  • 在 Active Collab API 中获取分页结果

    我刚刚发现你可以通过传入 page 参数来通过 api 获取分页结果 如下所示 projects client gt get projects 147 time records page 3 gt getJson 有没有办法知道一个项目有多
  • 动态改变jButton图标

    我有一个程序可以检测某些机器何时在线 并创建一个带有绿色 在线 图标的按钮来显示这一点 我想添加功能来定期检查这台机器是否仍然在线 如果不是 请将图标更改为我已经定义的 离线 图标 我知道如何设置图标 但我不知道如何做到这一点 一旦按钮已经
  • 用于重新启动 Raspberry Pi 的 Python 脚本

    我想我想要的是直接的 在 23 小时 59 分钟后重新启动我的 Raspberry Pi 的 Python 脚本 我尝试执行此操作而不是使用 cron 作业设置时间的原因是 Pi 没有用于时钟的板载电池 所以我不在乎时间是什么 如果连接到互
  • 无法通过 Delphi 2010 和 Indy 10.5.5 使用与 Office365 的安全 SMTP 连接

    任何人都可以诊断我使用 Delphi 2010 和 Indy 10 5 5 连接到 smtp office365 com 的失败吗 我已经阅读了 Indy 专家 Remy Lebeau 在这个问题中提供的代码示例 将 INDY 10 SMT
  • ASP.NET MVC ContactsManager 教程中是否有解决依赖注入循环问题的好/正确方法?

    如果您不知道我在说什么 请查看教程并尝试自己添加依赖注入 或者尝试我对问题的解释 Note 此问题不属于 ASP NET 原始教程的范围 本教程仅表明所使用的模式是依赖注入友好的 问题基本上是控制器 ModelStateWrapper 和
  • javascript 函数中的“return this”有什么作用?

    我想知道 return this 在 javascript 函数中做什么 它的目的是什么 假设我们有以下代码 Function prototype method function name func this prototype name
  • 有没有办法通过自定义事件传递附加数据?

    我需要在两个自主用户脚本之间传递数据 理想情况下不接触unsafeWindow对象 我认为使用自定义事件是可行的方法 我想到了这样的事情 为了示例的目的 让我们忽略 MSIE 模型 addEventListener customEvent
  • 如何获得 compose 中的活动

    有没有办法获取撰写功能中的当前活动 Composable fun CameraPreviewScreen val context ContextAmbient current if ActivityCompat checkSelfPermi
  • 如何在 Mac 上使用 cx_Freeze?

    我在我的 Mac 上使用了 python 3 4 和 cx Freeze 我试图将我的 python 脚本转换为独立的应用程序 这是我在 setup py 文件中获得的代码 application title Death Dodger 1
  • 将共享文件夹路径转换为 ​​UNC 路径

    我正在尝试通过使用计算机名称操作当前路径来将当前共享文件夹路径转换为 unc 路径 但是会导致编译错误 公共函数 UNCpath 中的 elem UBound CurrentPathA 行上存在预期数组 你们能告诉我造成这个问题的原因是什么
  • Firefox XPCOM 组件 - 调用方法 UnnamedClass 的权限被拒绝

    Firefox XPCOM 组件可以跨多个页面读写页面内容吗 设想 一堆本地 HTML 和 javascript 文件 Main html 文件打开一个窗口 pluginWindow 并使用以下命令创建一个插件 netscape secur