質問

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

役に立ちましたか?

他のヒント

HtmlSanitizer

出典: https://github.com/mganss/HtmlSanitizer

かなり堅牢な消毒剤。インラインスタイルを理解してクリーンアップできますが、<!> lt; style <!> gt;を処理できるパーサーはありません。ブロックなので、それらを取り除きます。確かに、MicrosoftのAntiXSSが放棄される前のレベルまで、そしておそらくそれを超えています。

HtmlRuleSanitizer

あなたの質問に基づいて、私は次の提案をしています:

  • 自由形式のHTMLを許可するため、許可されるタグ、属性、CSSクラスのセットを指定できるソリューションが必要です。
  • 自由形式のHTMLを許可すると、ユーザーがエラー(意図的かどうか)を行うため、不正なHTMLにも対処する必要があります。したがって、 Html Agility Pack などのトレラントパーサー上に構築されたソリューションが必要です。
  • ブラックリストサニタイザーは新しいHTML仕様からあなたを保護しないため、ホワイトリストのアプローチを採用する必要があります。さらに、HTML仕様のサイズのために、ブラックリストがすべてのケースを最初からカバーすることを保証するのは非常に困難です。

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

ac#バージョンはこちら

こちらはマイクロソフトが作成したものです。 http://wpl.codeplex.com/

var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);

使用することもできます

AntiXss.GetSafeHtmlFragments

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

 string mal = "<IMG NAME = 'myPic' SRC = 'images / myPic.gif' onerror='alert(1)' onerror='alert(1) ><div bottommargin = 150 ondblclick = 'alert('double clicked!')' >< p > Double - click anywhere in the page.</p> </div> ";
                var cleanHtml = Sanitizer.GetSafeHtmlFragment(mal);
                Console.Write(cleanHtml);
                Console.Read(); 

注:Nugetpackage ManagerからAntiXSSライブラリをダウンロードし、この名前空間を含めます ソースコード内のMicrosoft.Security.Application ;

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top