6

HTML のサブセット (tinyMCE を使用した入力) を使用するユーザー入力があるという一般的な状況があります。XSS 攻撃に対するサーバー側の保護が必要であり、人々がこれを行うために使用している十分にテストされたツールを探しています。PHP 側では、仕事をする HTMLPurifier のようなライブラリがたくさん見られますが、.NET では何も見つからないようです。

私は基本的に、タグのホワイトリスト、それらのタグの属性にフィルターをかけ、a:href や img:src のような「難しい」属性で正しいことを行うライブラリを探しています。

http://refactormycode.com/codes/333-sanitize-htmlでJeff Atwood の投稿を見たことがありますが、それがどれほど最新のものかはわかりません。サイトが現在使用しているものとはまったく関係がありますか? いずれにせよ、有効な入力を正規表現しようとする戦略に満足できるかどうかはわかりません。

このブログ投稿では、より説得力のある戦略と思われるものを紹介しています。

http://blog.bvsoftware.com/post/2009/01/08/How-to-filter-Html-Input-to-Prevent-Cross-Site-Scripting-but-Still-Allow-Design.aspx

このメソッドは、実際に HTML を解析して DOM にし、それを検証してから、そこから有効な HTML を再構築します。HTML 解析で不正な HTML を適切に処理できる場合は、すばらしいことです。そうでない場合でも、大したことではありません。ユーザーは tinyMCE エディターを使用する必要があるため、整形式の HTML を要求できます。どちらの場合も、私が知っている安全で整形式の HTML を書き直しています。

問題は、そのアルゴリズムを実際に実行するライブラリへのリンクがなく、単なる説明であることです。

そのようなライブラリは存在しますか?そうでない場合、優れた .NET HTML 解析エンジンは何でしょうか? また、追加の検証 a:href、img:src を実行するには、どの正規表現を使用する必要がありますか? ここで他に重要なものがありませんか?

ここでバギーホイールを再実装したくありません。確かに、一般的に使用されるライブラリがいくつかあります。何か案は?

4

6 に答える 6

3

Microsoft には、XSS から保護するためのオープンソース ライブラリがあります: AntiXSS

于 2009-08-22T08:10:47.247 に答える
3

解析したいが、無効な (x)HTML が入ってくるのではないかと心配している場合は、おそらくHTML Agility Packが解析に使用するのに最適です。要素だけでなく、許可する必要がある許可された要素の属性も忘れないでください(もちろん、ブラックリストを介して危険な可能性があるものを取り除こうとするのではなく、要素とその属性の許可されたホワイトリストに取り組む必要があります)

進行中の作業であるOWASP AntiSamy Projectもあります。XSSを試すことができるテスト サイトもあります。

これの正規表現は、おそらくリスクが高すぎる IMO です。

于 2009-08-22T08:14:00.047 に答える
2

http://www.microsoft.com/en-us/download/details.aspx?id=28589 ここからバージョンをダウンロードできますが、便利な DOCX ファイルにリンクしています。私が推奨する方法は、NuGet パッケージ マネージャーを使用して最新の AntiXSS パッケージを取得することです。

4.x AntiXss ライブラリにある HtmlSanitizationLibrary アセンブリを使用できます。GetSafeHtml() は、Microsoft.Security.Application.Sanitizer の下の HtmlSanitizationLibrary にあることに注意してください。

于 2012-06-23T07:08:40.620 に答える
1

数年前、TinyMCE を使用していたときとまったく同じ問題がありました。

.Net 用の適切な XSS/HTML ホワイトリスト ソリューションはまだないようです。そのため、私が作成して数年間使用しているソリューションをアップロードしました。

http://www.codeproject.com/KB/aspnet/html-white-listing.aspx

ホワイト リストの定義は、TinyMCE の有効な要素に基づいています。

テイク 2: Microsoft は最近、ホワイトリスト ベースの Anti-XSS Library (V3.0) をリリースしました。以下を確認してください。

Microsoft Anti-Cross Site Scripting Library V3.0 (Anti-XSS V3.0) は、開発者が ASP.NET Web ベースのアプリケーションを XSS 攻撃から保護できるように設計されたエンコーディング ライブラリです。XSS 攻撃に対する保護を提供するために、ホワイトリスト手法 (包含の原則とも呼ばれます) を使用するという点で、ほとんどのエンコーディング ライブラリとは異なります。このアプローチは、最初に有効または許容可能な文字セットを定義することによって機能し、このセット外のもの (無効な文字または潜在的な攻撃) をエンコードします。ホワイトリスト方式には、他のエンコーディング スキームよりも優れた点がいくつかあります。このバージョンの Microsoft クロス サイト スクリプティング ライブラリの新機能には、次のようなものがあります。

于 2009-08-22T07:53:38.747 に答える
0

https://github.com/Vereyon/HtmlRuleSanitizerは、この問題を正確に解決します。

ASP.NET MVC アプリケーションに wysihtml5 エディターを統合するときに、この課題がありました。ルールを使用して HTML のサブセットの通過を許可する、非常に優れたシンプルなホワイト リスト ベースのサニタイザーがあることを指摘しました。解析用の HtmlAgility パックに依存するサーバー側バージョンを実装しました。

Microsoft Web Protection Library (以前の AntiXSS) は、ほとんどすべての HTML タグを単純に削除しているように見えます。だから、それは私にとって選択肢ではありませんでした。

このHTML サニタイザーも非常に有望で、私の 2 番目の選択肢です。

于 2015-02-23T22:35:17.237 に答える