- - PR -
validaterequest=false 時のXSS対策について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-06 22:51
こんばんは。
ユーザからの入力値に全ての文字を許可したい場合は (例えばユーザ登録情報の自己紹介など) validaterequest=false を指定して要求の検証を無効にします。 この時、XSS等の対策として出力時のHtmlEncodeを行う必要がありますが、 登録情報を表示する全てのコントロールに対してServer.HtmlEncodeを かますという対応が一般的なのでしょうか? この場合、登録情報を表示する画面の作成者は、データ内にスクリプト等 が埋め込まれている可能性があるかをその都度確認し、Server.HtmlEncode を行う必要について判断しなければなりませんので、結果としてセキュリティ ホールを生み出し易い構成になってしまいます。 各コントロールにHtmlEncodeプロパティみたいな物が存在し、デフォルトtrue で設定されていれば悩まずに済むのですが、そのようなプロパティは存在しな いようです。 お勧めの対応方法がありましたらご教授ください。 | ||||
|
投稿日時: 2005-11-06 23:12
NAL-6295です。 私の場合ですが、 Labelを継承したカスタムコントロールを作成し、 Textプロパティをオーバライドし、 代入する時は、内部でHtmlEncodeが行われ、 参照する時は、内部でHtmlDecodeが行われるようにしてあります。 以上、参考になれば。 | ||||
|
投稿日時: 2005-11-07 03:01
こんばんは。
レスありがとうございます。
やはりカスタムコントロールを使用する対応になるのですね。 validaterequestなんて物をデフォルトで有効にするぐらいならば、 デフォルトで用意されている各コントロールにHtmlEncodeをかけて くれればいいのに、と思います。 入力値チェックはあくまでデータの整合性を保つためのものであっ て、入力された文字列が危険であるかどうかの判断は、各レイヤが 責任を持って行うのが本来の姿。SQL文で使用する入力値に危険な 文字が含まれている場合は、パラメータクエリで、ViewにHTMLを使用 するならば、HTMLを表示する際にそれぞれ無害化すれば問題ない訳で、 役割分担も明確に出来ます。 なんだか.NETのセキュリティに対するアプローチはどこかずれちゃって いるんではないかなぁ。と個人的には感じているのですが、 皆様はどのようにお考えでしょうか? いろいろな見解を聞かせて頂ければ幸いです。 | ||||
|
投稿日時: 2005-11-07 05:49
ASP.NET 2.0のGridViewにDataViewをバインドしたらHTMLタグが含まれるデータが自動的にHTMLEncodeされてました。ASP.NET 2.0では、この辺改善されているのではないでしょうか。HTMLEncodeしてほしくないときは、テンプレート列にしてEval()/Bind()で表示させる必要があるようです。
_________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2005-11-11 18:35
こんにちは。
やっと環境が整ったので試してみたのですが、 Label1.Text = TextBox1.Text を記述したところサニタイジングは行ってくれませんでした。 かなり期待していたのですが、ザンネンです。 |
1