【情報セキュリティ】クロスサイトスクリプティング

SQLインジェクションと並んで試験に出る頻度の高い「クロスサイトスクリプティング」もまとめておきます。

クロスサイトスクリプティング(Cross Site Scripting:略称 XSS)は別名ジャバスクリプトインジェクション(JavaScript Injection)とも言います。
不正なJavaScriptが実行されることにより、クッキー情報が漏洩する極めて単純な脆弱性です。
通常、この不正なJavaScriptは攻撃対象とは別のサイトになるため、クロスサイトスクリプティングと呼ばれています。

リスクとしては、クッキーを利用してセッション管理を行うサイトの場合にクッキーが漏洩することにより、セッションを乗っ取られることで他人へのなりすましが成立してしまうことです。
もう少し具体的に言うと、クッキーの中にセッションIDが保存されているとき、このセッションIDを盗むことができれば簡単に他人になりすますことができます。
別の例えをすると、他人の家の鍵を入手することと同じなので、鍵さえ持っていればいつでも入ることができますし、正面から鍵を使って侵入するため防犯システムでも感知されなくなります。
これと同様に、セッションIDを盗まれてなりすまされると、サーバサイドでは不正なアクセスなのかを判断することができなくなってしまいます。

脆弱性が存在するかどうかは、入力画面より
javascript: alert('Hoge')
あるいは
alert('Hoge');
のように入力し、その確認画面でダイアログが表示されるときに脆弱性が存在すると言えます。
ただし、セッション管理を行っていないサイトでは特に気にしなくて良い場合もあります。

この脆弱性を防ぐためには、基本的にはプログラムでの作りこみが必要となります。
(※ASP.NETの場合は不正なタグやスクリプトを入力するとシステムエラーにすることもできます)
一般的な方法は、表示する際にタグやJavaScriptを無効にする文字変換処理を加えることで、これをサニタイズと言います。
このサニタイズ処理は表示する直前に行うことが効果的です。
入力直後に変換した場合、文字数チェックが正常にできなくなったり、再入力時にサニタイズ前の状態に再変換しなければならなくなるからです。

投稿者: ♪ 日時: 2006年11月03日 23:26 このエントリーをはてなブックマークに追加 このエントリーをYahoo!ブックマークに登録 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをBlogPeople Tagsに追加 このエントリーをBlogPeople Instant Bookmarkに追加 このエントリーをPingKingポッケに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 Yahoo!ブックマークでこのサイトを登録している人数 人が登録

トラックバック

このエントリーのトラックバックURL:
http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/194

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)