0

テキストボックスを持つ ASP.NET フォームがあります。ユーザーは任意の文字、数字などを入力できます。ユーザーが危険な文字をフィルター処理するように制限する必要はありません。しかし、クロス サイト スクリプティングを防止する必要があります。

ユーザーは、次のように alert('hi') のような任意のテキストを入力できます。

データはDBにそのまま保存する必要があります。また、そのままの形で戻ってラベルに表示する必要があります。

クロスサイトスクリプティングなしでこれを達成するにはどうすればよいですか

4

1 に答える 1

1

そうですね、ユーザーが何を入力できるかについて何らかの制限を検討する必要があると思います。null バイトや印刷できない文字は必要ありませんか? 英数字以外の値を受け入れる場合でも、許可する文字を決定し、単純な正規表現を使用して残りを除外する必要があります (もちろん開始アンカーと終了アンカーを使用)。

次に、XSS を防止する方法は、表示するたびに値をエンコードすることです。これを行う方法はたくさんありますが、私に言わせれば、 Microsoft Web Protection Libraryの AntiXSS クラスを使用するのが最善です。HTML 要素、属性、JavaScript などの中でレンダリングするかどうかに基づいて、出力をエンコードできます。

于 2011-05-03T19:12:10.820 に答える