Web サイトで GetSafeHtmlFragment を使用していますが、 と を除くすべてのタグ<p>
が<a>
削除されていることがわかりました。
調べてみたところ、Microsoft からの解決策がないことがわかりました。
それに取って代わられるものはありますか、それとも解決策はありますか?
ありがとう。
Web サイトで GetSafeHtmlFragment を使用していますが、 と を除くすべてのタグ<p>
が<a>
削除されていることがわかりました。
調べてみたところ、Microsoft からの解決策がないことがわかりました。
それに取って代わられるものはありますか、それとも解決策はありますか?
ありがとう。
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);