2

最終的に、JsHtmlSanitizerをスタンドアロンのクライアントサイドスクリプトとして機能させました。次に、スクリプトタグとリンクだけでなく、文字列からすべてのHTMLタグを削除したいと思います。この例

html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');

「 hello 」を返しますが、すべてのタグを削除したいと思います。

4

2 に答える 2

0

サニタイズ後に正規表現を使用してすべての HTML タグを削除してみませんか?

var input = '<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"></script>';
var output = null;
output = html_sanitize(input);
output = output.replace(/<[^>]+>/g, '');

これにより、サニタイズ後に入力文字列からすべてのhtml タグが削除されます。

基本的なサニタイズ (コンテンツとすべての html タグのみを含む script および style タグを削除する) だけを行いたい場合は、正規表現内ですべてを実装できます。以下に例を示しました。

var input = '<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"></script>';
input += '<script> if (1 < 2) { alert("This script should be removed!"); } </script><style type="text/css">.cssSelectorShouldBeRemoved > .includingThis { background-color: #FF0000; } </style>';

var output = null;
output = input.replace(/(?:<(?:script|style)[^>]*>[\s\S]+?<\/(?:script|style)[^>]*>)|<[^>]+>/ig, '');
于 2012-12-28T07:54:26.880 に答える
0

以下の JavaScript 関数を使用して、 html_sanitize()から取得した文字列からすべての html タグを削除します。

var output = html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');

output = output.replace(/(<.*?>)/ig,"");

それが役に立てば幸い :)

于 2012-12-28T10:56:43.733 に答える