2

Web サイトで GetSafeHtmlFragment を使用していますが、 と を除くすべてのタグ<p><a>削除されていることがわかりました。

調べてみたところ、Microsoft からの解決策がないことがわかりました。

それに取って代わられるものはありますか、それとも解決策はありますか?

ありがとう。

4

2 に答える 2

8

Microsoft が 4.2.1 バージョンで 4.2 XSS ライブラリのセキュリティ リークをひどく過剰に補償し、1 年経った今でも更新していないことは驚くべきことです。どこかで誰かがコメントしているのを読んだので、GetSafeHtmlFragmentメソッドの名前を に変更する必要がありました。StripHtml

この関連する SO issueで提案されているHtmlSanitizer ライブラリを使用することになりました。NuGet を介してパッケージとして入手できるのが気に入りました。

このライブラリは基本的に、現在受け入れられている回答が使用するホワイトリストアプローチのバリエーションを実装しています。CsQueryただし、HTML Agility ライブラリの代わりに基づいています。このパッケージは、スタイル情報 (HTML 属性など) を保持できるなど、いくつかの追加オプションも提供します。このライブラリを使用すると、プロジェクトで以下のようなコードが生成されました。これは、少なくとも、受け入れられた回答よりもはるかに少ないコードです:)。

using Html;

...

var sanitizer = new HtmlSanitizer();
sanitizer.AllowedTags = new List<string> { "p", "ul", "li", "ol", "br" };
string sanitizedHtml  = sanitizer.Sanitize(htmlString);
于 2013-10-16T09:32:23.533 に答える