0

インフレームエディターをゼロから構築しました。XSSの脆弱性のために試しています。iframe は次のように記述されます。

<iframe   id="wysiwygtextfield" onload="return initialize(this);"  frameborder="0"  scrolling="no" >
                 <html>
                      <head>
                      </head>
                 <body spellcheck = "true">
                      <br/>
                 </body>
                 </html>
<iframe>

次のベクトルをコピーして貼り付けてみます。

<SCRIPT SRC=//ha.ckers.org/.j>

そして実行します。次のようなコピーペーストイベントにイベントトリガーがあります。

    $('#wysiwygtextfield').contents().find('body').bind("paste", function(e) {

        var element = this;
         setTimeout(function(){
        var text = $(element).text() ;
      /*  var pattern = /<script(\s+(\w+\s*=\s*("|').*?\3)\s*)*\s*(\/>|>.*?<\/script\s*>)/;

        text = text.toLowerCase().replace(pattern,"Dirty paste") ; */
    $('#wysiwygtextfield').contents().find('img').each(
                                                    function()
                               { text += "<br/><br/>"+ $(this).get(0).outerHTML ; }
);

        $(element).html(text) ; },10);

    }); 

正規表現の一致を使用して対抗しようとしましたが、効果的ではありません (ブラックリストのようなものです)。他のテキスト エディタ (ckeditor と tinymce) をいくつか試してみましたが、javascript を実行せずにテキストをコピーして貼り付けるだけです。実行せずにjavascriptを安全にコピーペーストする他の方法はありますか? マークアップを削除するために、サーバー側にサニタイザーがあります。

4

1 に答える 1