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 を単純な文字列変数に変換するより良い方法を探しています。このようにする人はいますか?