【发布时间】:2012-11-07 06:31:00
【问题描述】:
我被要求通过一个名为 parseHTML 的函数传递一些 html,这些 html 从我的服务器发送到我的 Firefox 插件,这是由 Mozilla 插件审阅者提供的。有问题的方法记录在this XUL school tutorial中。
然而,在我的内容脚本中,typeof parseHTML == "undefined"。我相信这是因为我的插件是使用插件 SDK 而不是 XUL 构建的。
用SDK构建的插件不能访问这个方法是正确的吗? SDK中是否有等效方法?
【问题讨论】:
-
当然这个函数没有定义——它的源代码在你链接到的教程中引用。你真正需要的是nsIParserUtils,这是你的附加代码(不是内容脚本)可以访问的。那么,该 HTML 代码是否会通过您的附加代码?请注意,虽然 XUL 学校教程很旧 - 您链接到的特定文档非常新并且非常最新。
-
不,它是从内容脚本中的 JS 模板构建的。听起来我必须在运行时在内容脚本中编译一个模板,向附加代码发出一条消息,传递 html 字符串。清理 html 字符串,然后将其传递回内容脚本进行渲染?听起来很有趣:-)
-
或者也许改变模板机制(不知道你在那里使用什么),以便它不处理原始 HTML 代码?如果您可以使用
.textContent填写动态数据,则无需任何清理即可安全。 -
我已经在使用Underscore's escape function 对所有内容进行消毒。显然这还不够。
-
使用该功能的缺点是您很容易忘记在某些地方进行转义,这会导致安全漏洞。也许这就是审稿人的意思——最好使用更强大的方法。话又说回来,审阅者总是有可能只是错过了代码的那个方面。
标签: firefox firefox-addon escaping firefox-addon-sdk html-sanitizing