スクリプト/SQLインジェクションなどからの入力をサニタイズするために徹底的にテストされた.NETライブラリはありますか?
5 に答える
MicrosoftAntiXSSライブラリを使用するのが好きです。それは無料でとても使いやすいです。
SQLインジェクションでは、常にパラメーターを使用します。繰り返しますが、それらは使いやすく、特殊文字をエスケープしようとするのは好きではありません。あなたが私に尋ねれば、それは災害のレシピです。
SQL インジェクションとクロスサイト スクリプティング (別名 XSS またはスクリプト インジェクション) は別の問題です。
1) SQL インジェクションは非常に簡単です。常にパラメーター化されたクエリ (SQLParameter) を使用し、T-SQL ストアド プロシージャ内で sp_exec @query を絶対に実行しないでください。.Net パラメーター化されたクエリは、この 2 次インジェクションから保護されません。
2) JavaScript を HTML ドキュメントに挿入できる場所が非常に多いため、XSS を普遍的に軽減することはより困難です。ユーザー データのエンコードに AntiXSS を使用するという推奨事項は正しいです。ユーザー データを出力ドキュメントに挿入する前に、このライブラリを使用します。残念ながら、ASP.Net サーバー コントロールを使用している場合、すべてのデータをエンコードすると、エンコードが二重になり、アーティファクトが表示される可能性があります。これは、データをエンコードするコントロール プロパティとエンコードしないコントロール プロパティがあるために発生します。デフォルトでエンコードされるプロパティを確認するには、この表を参照してください。エンコードしないプロパティに割り当てる前に、Anti-XSS を使用してください。
SQLインジェクションを防ぐために、文字列をサニタイズするのではなく、パラメータ化されたコマンドを使用します。
AntiXSSは、XSS攻撃を防ぐために使用できます。
ASP.NET 4.5 を使用している場合は、フレームワークに同梱されている AntiXSS 機能を使用できるようになりました。
これらは、ASP.NET 4.5 に組み込まれた外部 AntiXSS ライブラリの一部です。
HtmlEncode
、HtmlFormUrlEncode
、およびHtmlAttributeEncode
XmlAttributeEncode
とXmlEncode
UrlEncode
とUrlPathEncode
(新規)CssEncode