2011-10-27 8 views
2

私のサイトのユーザーには、自分でHTMLを書くことができるページがあります。私はこれを注文リスト、スタイリングなどのために使用したいと思っていますが、スクリプトを挿入しようとする人もいます。ajaxクエリのリクエスト検証を使用していますか?

ユーザーの説明を更新するメカニズムは、ajaxによるものです。 javascriptから、ajax.ashxというファイルにリクエストを送信し、ajaxMethods.csの関数を呼び出します。この関数では、ユーザーの新しい記述でSQL Serverを更新します。

説明がサーバーに送信される前に、関数の入力を検証するにはどうすればよいですか?私はスクリプティングと何かをやりたいですが、通常のhtmlタグは<p>のままにしておきます。このすべてを処理するツールはありますか?

答えて

1

:以下のリファレンスを参照してください?このようにして、実際のリクエスト内で見つかったスクリプト/ htmlコードは無効で、ストリップ(またはエンコード)することができます。これにより、あらかじめ決められたタグのリストのみを許可するという利点も得られます。基本的には、StackOverflowと同じ機能を提供します。

+1

それは素晴らしいアイデアです。 – Oliver

0

出力をHttpServerUtility.HtmlEncodeにすることをおすすめします。 HTMLではなくスクリプトタグを解析しようとするのは良いアプローチではありません。ユーザーが(たとえばMarkdown用)の代わりにカスタム形式/言語を使用できるようにして、HTMLにこのサーバ側を解析しないのはなぜ

XSS (Cross Site Scripting) Cheat Sheet

+0

HtmlEncodeはすべてのタグをエンコードするために使用することはできませんが、タグを残しておく必要がありますが、削除するスクリプトタグは必要です。 – Oliver

+0

問題を引き起こすスクリプトタグを削除するだけでHTMLを解析しようとすると、一般的なXSS攻撃を止めることはできません。 ASP.NET MVCがデフォルトですべての出力をエンコードする理由があります。 :) –

関連する問題