Firefox 安全地使用远程HTML

Firefox 安全地使用远程HTML,firefox,firefox-addon,escaping,firefox-addon-sdk,html-sanitizing,Firefox,Firefox Addon,Escaping,Firefox Addon Sdk,Html Sanitizing,Mozilla插件审阅者要求我通过一个名为parseHTML的函数将一些html从服务器发送到Firefox插件。讨论中的方法记录在中 但是,在我的内容脚本中,typeof parseHTML==“undefined”。我相信这是因为我的插件是使用插件SDK而不是XUL构建的 使用SDK构建的加载项无权访问此方法是否正确?SDK中是否有等效的方法 当然,这个函数是未定义的-它不是全局定义的助手,而是必须在代码中定义的东西(如代码示例所示)。它使用您需要访问的。在基于SDK的扩展中,您将使用: v

Mozilla插件审阅者要求我通过一个名为
parseHTML
的函数将一些html从服务器发送到Firefox插件。讨论中的方法记录在中

但是,在我的内容脚本中,
typeof parseHTML==“undefined”
。我相信这是因为我的插件是使用插件SDK而不是XUL构建的


使用SDK构建的加载项无权访问此方法是否正确?SDK中是否有等效的方法

当然,这个函数是未定义的-它不是全局定义的助手,而是必须在代码中定义的东西(如代码示例所示)。它使用您需要访问的。在基于SDK的扩展中,您将使用:

var{Cc,Ci}=require(“chrome”);
var parser=Cc[“@mozilla.org/parserutils;1”].getService(Ci.nsipserutils);
var sanitized=parser.sanitize(html,parser.sanitizeralowstyle);
如果您在内容脚本中,那么您当然不能使用它-您需要将HTML代码发送到加载项,在那里对其进行清理,然后将其发送回内容脚本。虽然这是一个选项,但您可能需要考虑其他的可能性,比如首先不使用<代码>内文HTML >代码(如果您只需要在一个元素上设置一些文本,那么<代码>文本内容< /代码>是一个安全的选择)。
旁注:虽然XUL教程已经很老了,但这个特定的页面一年前才被导入到MDN中,并根据历史定期更新。因此,它是最新的,只是没有明确地用于附加SDK(实际上与大多数MDN文章一样)。

当然,这个函数没有定义-它的源代码在您链接到的教程中引用。您真正需要的是您的附加代码(而不是内容脚本)可以访问的内容。那么,HTML代码是否贯穿于您的附加代码中?请注意,虽然XUL学校教程很旧,但您链接到的特定文档是非常新的,并且是最新的。不,它是从内容脚本中的JS模板构建的。听起来我必须在运行时在内容脚本中编译一个模板,向附加代码发送一条消息,并传递html字符串。清理html字符串,然后将其传递回内容脚本进行渲染?听起来很有趣:-)或者更改模板机制(不知道您在使用什么),使其不处理原始HTML代码?如果您可以使用
.textContent
来填充动态数据,那么它将是安全的,无需任何清理。我已经在使用。显然,这还不够。使用该功能的缺点是,您很容易忘记在某些地方转义,这会导致安全漏洞。也许这就是评论员的意思——最好使用更稳健的方法。然后,总是有可能评审员只是错过了代码的这一方面。