- PR -

XSS対応におけるサニタイジングについて

1
投稿者投稿内容
kkk
常連さん
会議室デビュー日: 2004/09/17
投稿数: 33
投稿日時: 2004-10-07 20:00
クロスサイトスクリプティング(XSS)に対するASP.NETでの対応にて困っています。
お知恵を拝借していただければと思い、投稿しました。
ASP.NET(VB)にて、インターネットに公開するサイトを開発しています。
出力時にサニタイジングするためにHtmlEncodeメソッドを使用しました。
しかし、#|;などはエスケープされないようです。
HtmlEncodeにより、メタキャラクタに全てについて変換してくれると考えていましたが、そのようなメソッドではないようです。
#|;については、独自に変換処理の作り込みが必要でしょうか?
ほかに何かよいクラス等あれば教えてください。
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2004-10-08 08:53
特定の文字(キャラクタ)について無害化を行いたいのであれば
Replace関数を使うことで実現できると思います。

/例/
dim strHTML as string = Replace(何か文字列,"#","(代替文字列)")

[追記]
ただ、

#も;も意味を持っているので変換してはいけないと思うのですが。
たとえば、「!」は"!"(びっくりマーク)を表現するのにかきますよね。
[/追記]

HTMLエンコードの観点から見て、
# | ; のそれぞれの文字にどのような
脆弱性があるかが逆に気になるところですね。


_________________
Mooは牛の鳴き声。

[ メッセージ編集済み 編集者: Moo 編集日時 2004-10-08 09:11 ]
kkk
常連さん
会議室デビュー日: 2004/09/17
投稿数: 33
投稿日時: 2004-10-08 10:34
MOOさん
ご指摘ありがとうございました。

#も;のエスケープの指摘について、2重にエスケープすることを避ければ問題ないですよね?入力内容に対して、HTML出力時のみ行う予定ですので、問題ないかと思われます。

# | ; の脆弱性の指摘についてですが、OS・使用言語に依存するもので、多分現状はASPでは問題ないかと思われます。諸諸事情であやしい文字(未来の脆弱性の検出など。ま、それを考え出したらきりないですが。)はリプレースしたいという要件です。

HtmlEncodeにてエスケープされる文字の全てが分かる資料ってどこかにないのでしょうか?(MSのサイトにはなさそうですので)
また、シングルコーテーションが変換されないのが腑に落ちません。サニタイズする必要なしなのでしょうか?

以上、情報ありましたら、お知恵を拝借させてください。
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2004-10-08 11:09
引用:

okaさんの書き込み (2004-10-08 10:34) より:

HtmlEncodeにてエスケープされる文字の全てが分かる資料ってどこかにないのでしょうか?(MSのサイトにはなさそうですので)
また、シングルコーテーションが変換されないのが腑に落ちません。サニタイズする必要なしなのでしょうか?


一度プログラムでループをかけて実験してみてはいかがですか?

コード:
'todo:Literal1を貼り付けてください。

'notice:コードは検証しておりません。
Sub Page_Load(sender As Object, e As EventArgs)

literal1.text="<pre>"
For i As Integer = &H20 To &HFF
literal1.text+= cstr(i) +":"+ _
Server.HtmlEncode(Chr(i)) +":"+ _
Server.HtmlEncode(Server.HtmlEncode(Chr(i))) +"<br>"
Next i

End Sub



シングルコーテーションはタグ要素に対するコード埋め込みなどが考えられますね。
また、今回の場合とは離れますがSQLインジェクションでも度々話題になることがありますね。

追記:コードを整形しました。
_________________
Mooは牛の鳴き声。

[ メッセージ編集済み 編集者: Moo 編集日時 2004-10-08 11:13 ]
kkk
常連さん
会議室デビュー日: 2004/09/17
投稿数: 33
投稿日時: 2004-10-08 11:29
MOOさん

お疲れ様です。
ソースまで付けていただき、お手数おかけしてすいません。
いろいろとご指摘ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)