- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 Mozilla Firefox 插件,它可以让我评论网站:当我打开网站并单击某处时,该插件会创建一个 <div>
在此位置的框中,我可以在其中输入评论文本。稍后,当我再次打开该网站时,该插件会自动将我之前创建的评论框放在之前的位置。 (类似于很多PDF阅读器中的评论功能等)
这会导致安全问题:网站可以使用事件监听器来监听新 <div>
的创建。元素并读取其内容,允许其读取我的私有(private)评论。
如何解决这个安全问题?基本上,我想要一个 Firefox 插件将私有(private)内容放入网站中,而该网站不应该能够通过 JavaScript
访问此内容。 。 (除非我愿意。)
我可以听取听众的意见,并在网站附加它们后立即将它们分离 - 但这听起来确实是一个可靠的解决方案。
是否有一个安全概念,以便使我的插件能够分别更改 DOM 的权限,以控制对某些元素的访问?或者,是否可以实现某种覆盖,它不是网站 DOM 的实际部分,而只能通过插件访问?
其他插件也应该出现类似的安全问题。他们是如何解决的?
最佳答案
如果您将 DOM 注入(inject)到文档中,文档将始终能够操作它,您对此无能为力。您可以:
1) 不要直接在文档中注入(inject)评论,而只是一个占位符,其中有评论的第一个单词,或者评论的图像版本(您可以使用 canvas
生成它) >),将完整的内容保留在 JavaScript 插件范围内,无法从页面访问:当您单击编辑或添加时,您可以打开一个面板
并在那里进行编辑。
2)注入(inject)一个iframe,如果你的页面远程在另一个域中应该不是问题,父文档无法访问iframe;反之亦然:您需要将内容脚本附加到 iframe 以便与您的附加代码对话,然后您可以使用附加代码从 iframe 和父文档发送和接收消息。如果您使用本地 resource://
文档,恐怕您需要一个糟糕的解决方法,并且您需要使用 sandbox
策略来避免父文档可以与 iframe 本身进行通信。请参阅我的回复:Firefox Addon SDK: Loading addon file into iframe
3) 使用 CSS:您可以通过 page-mods 中的 contentStyle
和 contentStyleFile
将 CSS 应用到文档。以这种方式附加的 CSS 无法由文档本身检查,您可以使用 content
将文本添加到页面,而无需实际添加可以检查的 DOM。因此,您的风格可以是:
span#comment-12::after{
content: 'Hello World';
}
您添加的 DOM 可能位于:
<div><span id='comment-12'></span></div>
如果页面尝试检查span的内容,它将得到一个空文本节点;并且因为从页面本身无法检查以这种方式添加的样式表,所以他们无法通过样式规则来获取文本。
不确定是否有替代方案,这些是我想到的解决方案。
关于javascript - Firefox Addon 可以在不让网站访问更改的情况下操作 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038142/
我正在开发一个 Firefox 插件,我假装我的插件能够在桌面和移动设备上运行。我认为或多或少所有东西都与这两种环境兼容,但是我想根据当前设备是移动设备还是桌面设备来运行一些代码,所以问题是是否有类似
我正在开发一个 Firefox 插件,我不确定的一件事是如何在用户卸载插件时删除与我的插件相关的用户首选项。首选项被设置,如果用户卸载并重新安装首选项仍然存在。一些设置还与第一次安装有关,因此如果用户
使用 SDK 制作对话框的正确方法是什么(它没有锚定到附加栏等,而是显示在屏幕中央)?这个重要功能似乎没有任何 API。我确实看到 windows/utils 有 open 但我有两个问题: 打开对话
我遵循了几个教程但没有成功。我认为这是经典的例子,但我无法让它发挥作用。我可以保存我的项目,安装插件,当我选择一些文本时我可以看到上下文菜单项“日志选择”,但是当我点击它时没有任何反应。 export
我刚刚制作了一个 FF 插件并制作了一个简单的网站。我希望访问者点击“下载”按钮安装插件,而不是下载。它在本地有效,但在我上传网站时无效。我检查了 mozilla 存储库,它们也只是链接到 xpi 文
构建传统的 Firefox 扩展,您将在 install.rdf 中设置 minVersion 字段。由于这是由 package.json 和 cfx 抽象出来的,有没有办法设置 minVersion
请告诉我如何在 odoo9 中将文件夹(例如:custom_module)添加到“./odoo.py --addons=./addons” 我正在尝试将 custom_module 添加到“”./od
我用 simple-prefs配置插件设置的模块。我怎么能以编程方式 打开插件的设置页面? 最佳答案 我们在 test add-on here 中执行此操作 那里的代码比您需要的要多,因此较短的版本是
我有一个带有工作回调构造的插件: 库/main.js: function myLogin(loginname,loginfield) { var pageUrl = tabs.activeTa
为了在我的服务器上为我的插件提供自动更新,我需要创建一个 update.rdf文件。 我如何生成这样的文件? 文档非常多:https://developer.mozilla.org/en-US/doc
我在此链接中阅读了有关“请求”功能的信息: https://addons.mozilla.org/en-US/developers/docs/sdk/1.1/packages/addon-kit/do
我正在尝试使用 nsIHttpChannel 使用 firefox 插件 sdk 读取 header 喜欢.. var httpChannel = subject.QueryInterface(Ci.
有没有办法在内容脚本中访问 Fire Fox addon sdk 中的 Html5 文件 api? 这是为了存储用户添加的单词及其含义所必需的。数据可能会变大,因此本地存储不是一种选择。 windo
两者有什么区别: import React from 'react/addons'; let {PropTypes} = React; 对比 import React, { PropTypes } f
tl;dr:我们使用 Addon SDK 创建了一个 firefox 插件。由于编译插件是更大的构建系统中的一个步骤(我们也为 chrome 编译),我们的构建系统手动打包 xpi 并且不使用 jpm
我是 Windows 7 64 位用户,我在更新最新版本的 Android Studio 和 SDK 后遇到了 Android Studio 问题组件.. The following SDK comp
我正在研究一个Firefox扩展。问题是,如果我进行了任何更改,我需要关闭然后重新打开firefox浏览器以查看更改。我可以通过刷新页面来查看那些更改吗? 最佳答案 您可能想尝试Restart Fir
似乎是您从属性 title="test" 获得的工具提示不显示在面板内。 也用 stackoverflow loaded in the panel 测试过, 将鼠标悬停在热门、周、月上时没有工具提示。
截至 2019 年 6 月 27 日,所有语言词典的下载量约为 1,800 次。我已从该页面查看了一些示例仪表板... https://addons.mozilla.org/en-US/firefox
我正在尝试通过 msi 安装程序静默安装 firefox xpi。我是通过以下方法这样做的: 解压我的 xpi在某个临时目录中并将其中的所有内容复制到 %APPDATA%\Mozilla\Firefo
我是一名优秀的程序员,十分优秀!