19


2

私は、asp.net mvcを使って一般公開されるプロジェクトを始めています。 私はそこに約10億のphp、python、およびruby html消毒剤があることを知っていますが、誰もが.netに良いものへのいくつかのポインタを持っていますか? あなたの経験は何ですか? stackoverflowはasp.netで行われているフリーフォームHTMLを許可するサイトです。

6 Answer


15


HtmlSanitizer

ソース:https://github.com/mganss/HtmlSanitizer

かなり堅牢な消毒剤です。 それは理解し、インラインスタイルをきれいにすることができますが、扱うことができるパーサーを持っていません

ブロックするので、それらは取り除かれます。 MicrosoftのAntiXSSが放棄される前のレベルに達したことは間違いありません。


3


C#のバージョンがあります here


3


これはマイクロソフトによって構築されたものです。 http://wpl.codeplex.com/

var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);


3


  • https://github.com/Vereyon/HtmlRuleSanitizer [HtmlRuleSanitizer] *

あなたの質問に基づいて、私は以下の提案があります:

  • 自由形式のHTMLを許可したいので、許可されているタグ、属性、CSSクラスのセットを指定できるようにするための解決策が必要です。

  • 自由形式のHTMLを許可することで、ユーザーが(意図的かどうかにかかわらず)エラーを犯すため、不正なHTMLにも対処しなければならない可能性があります。 したがって、https://htmlagilitypack.codeplex.com/ [HTML Agility Pack]のような耐性のあるパーサーに基づいて構築されたソリューションが必要です。

  • ブラックリストサニタイザーは新しいHTML仕様からあなたを保護しないので、あなたはホワイトリストアプローチを採用したいと思うでしょう。 さらに、HTML仕様のサイズのために、ブラックリストがすべてのケースを最初からカバーすることを保証することは非常に困難です。

私は同じ問題に直面し、Html Agility Packの上にホワイトリストルールベースのHTMLサニタイザーであるHtmlRuleSanitizerを構築しました。


1


私達も使用できます

AntiXss.GetSafeHtmlFragments

HTMLフラグメントを解析して入力をサニタイズし、このサニタイザーをリッチコンテンツに使用して有害なスクリプトを含まないようにし、ブラウザに表示しても安全であるようにします。テキスト入力(リッチコンテンツではない)ではAntiXss.HtmlEncodeを使用します。またはその他の同等のHTMLエンコーダ。こちらはリッチコンテンツのサンプルです。

string mal = "<p>ページ内の任意の場所をダブルクリックします。 "; var cleanHtml = Sanitizer.GetSafeHtmlFragment(mal); Console.Write(cleanHtml); Console.Read();

注:AntiXSSライブラリの前にnugetpackageマネージャをダウンロードして、このネームスペースをソースコードに含めてください。 Microsoft.Security.Application。