- - PR -
XSS対応におけるサニタイジングについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-07 20:00
クロスサイトスクリプティング(XSS)に対するASP.NETでの対応にて困っています。
お知恵を拝借していただければと思い、投稿しました。 ASP.NET(VB)にて、インターネットに公開するサイトを開発しています。 出力時にサニタイジングするためにHtmlEncodeメソッドを使用しました。 しかし、#|;などはエスケープされないようです。 HtmlEncodeにより、メタキャラクタに全てについて変換してくれると考えていましたが、そのようなメソッドではないようです。 #|;については、独自に変換処理の作り込みが必要でしょうか? ほかに何かよいクラス等あれば教えてください。 | ||||||||
|
投稿日時: 2004-10-08 08:53
特定の文字(キャラクタ)について無害化を行いたいのであれば
Replace関数を使うことで実現できると思います。 /例/ dim strHTML as string = Replace(何か文字列,"#","(代替文字列)") [追記] ただ、 #も;も意味を持っているので変換してはいけないと思うのですが。 たとえば、「!」は"!"(びっくりマーク)を表現するのにかきますよね。 [/追記] HTMLエンコードの観点から見て、 # | ; のそれぞれの文字にどのような 脆弱性があるかが逆に気になるところですね。 _________________ Mooは牛の鳴き声。 [ メッセージ編集済み 編集者: Moo 編集日時 2004-10-08 09:11 ] | ||||||||
|
投稿日時: 2004-10-08 10:34
MOOさん
ご指摘ありがとうございました。 #も;のエスケープの指摘について、2重にエスケープすることを避ければ問題ないですよね?入力内容に対して、HTML出力時のみ行う予定ですので、問題ないかと思われます。 # | ; の脆弱性の指摘についてですが、OS・使用言語に依存するもので、多分現状はASPでは問題ないかと思われます。諸諸事情であやしい文字(未来の脆弱性の検出など。ま、それを考え出したらきりないですが。)はリプレースしたいという要件です。 HtmlEncodeにてエスケープされる文字の全てが分かる資料ってどこかにないのでしょうか?(MSのサイトにはなさそうですので) また、シングルコーテーションが変換されないのが腑に落ちません。サニタイズする必要なしなのでしょうか? 以上、情報ありましたら、お知恵を拝借させてください。 | ||||||||
|
投稿日時: 2004-10-08 11:09
一度プログラムでループをかけて実験してみてはいかがですか?
シングルコーテーションはタグ要素に対するコード埋め込みなどが考えられますね。 また、今回の場合とは離れますがSQLインジェクションでも度々話題になることがありますね。 追記:コードを整形しました。 _________________ Mooは牛の鳴き声。 [ メッセージ編集済み 編集者: Moo 編集日時 2004-10-08 11:13 ] | ||||||||
|
投稿日時: 2004-10-08 11:29
MOOさん
お疲れ様です。 ソースまで付けていただき、お手数おかけしてすいません。 いろいろとご指摘ありがとうございました。 |
1