scriptタグやiframeタグなどの WYSIWYG エディタの安全でないコンテンツや、他のタグのイベントを使用する前に削除するにはどうすればよいですか?
<script>
// Dangerous contents
</script>
<iframe>
// bad web pages
</iframe>
<span onclick="javascript://do bad work here !!!">click me</span>
scriptタグやiframeタグなどの WYSIWYG エディタの安全でないコンテンツや、他のタグのイベントを使用する前に削除するにはどうすればよいですか?
<script>
// Dangerous contents
</script>
<iframe>
// bad web pages
</iframe>
<span onclick="javascript://do bad work here !!!">click me</span>
このような保護を自分で作成しようとしないでください。
特に、クライアント側 (javascript) に保護を配置するべきではありませんが、代わりにhttp://htmlpurifier.org/のようなサーバー側のフィルタリングを使用してください。
このような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 を無効にできるためです。