0

scriptタグやiframeタグなどの WYSIWYG エディタの安全でないコンテンツや、他のタグのイベントを使用する前に削除するにはどうすればよいですか?

<script>
// Dangerous contents
</script>

<iframe>
// bad web pages
</iframe>

<span onclick="javascript://do bad work here !!!">click me</span>
4

2 に答える 2

1

このような保護を自分で作成しようとしないでください。

特に、クライアント側 (javascript) に保護を配置するべきではありませんが、代わりにhttp://htmlpurifier.org/のようなサーバー側のフィルタリングを使用してください。

于 2013-07-22T07:29:41.367 に答える
-1

このようなJavaScript関数を使用して中和できます

function neutralizeText(text) {
    var i,mtch=text.match(/(<[a-z]+\s+[^>]*\s+|<[a-z]+\s+)on[a-z]+(\s)*=(\b|\s|[^>])*>/gi);
    if(mtch!=null) {
        for(i=0;i<mtch.length;i++) {
            text=text.replace(mtch[i],mtch[i].replace(/\s+on[a-z]+(\s)*=/gi,' data-neutralized='));
        }
    }
    text=text.replace(/<script(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/script>/ig,'');
    text=text.replace(/<iframe(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/iframe>/ig,'');
    text=text.replace(/<object(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/object>/ig,'');
    text=text.replace(/<\!\-\-(.*?)\-\->/g,'');
    text=text.replace(/<\!\-\-/g,'');
    return text;
}

しかし、それだけでは十分ではなく、サーバー側で確認する必要があります。ブラウザで JavaScript を無効にできるためです。

于 2013-07-22T07:15:53.730 に答える