在 AMO 编辑最近的一次审查中,我的 Thunderbird 插件版本被拒绝,因为它“从包含未经处理的数据的字符串创建 HTML”——这“是一个重大的安全风险”。
我想我明白为什么了。现在,我的问题是如何解决这个问题。
这个线程给了我一些线索,但这不是我所需要的。
我的插件需要将剪贴板的内容粘贴为超链接,使用剪贴板内容作为链接文本,并在其周围插入 html,如下所示:`" + clipboardtext + ""。
现在,如果我将剪贴板内容作为 HTML 插入,我需要先“清理”它。这是我想出的。现在,我还没有写正则表达式部分,因为我认为这不是最好的方法,尽管我认为它会起作用:
function makeSafeHTML(whathtml){
var parser = Cc["@mozilla.org/parserutils;1"].getService(Ci.nsIParserUtils);
var sanitizedHTML = parser.sanitize(whathtml, 01);
//now remove the extratags added by the sanitization method, perhaps via regex
//"<html><head></head><body>"
//"</body></html>"
return sanitizedHTML;
}
我的意图是使用生成的“净化”字符串来执行此操作 - 这会将字符串粘贴为href
超链接的值:
var html_editor = editor.QueryInterface(Components.interfaces.nsIHTMLEditor);
html_editor.insertHTML("<a href='"+whathref+"'>"+whattext+"</a>");
所以我正在寻找一种更好的方法来将经过净化的 HTML 转换为一个简单的字符串变量。你们中有人会这样做吗?