このページの本文へ

前へ 1 2 次へ

WWW完全制覇 第7回

クロスサイトスクリプティングと「Webからの脅威」

Webにまつわる危険をきちんと知っていますか?

2009年06月16日 09時00分更新

文● 遠藤哲、中塚寛幸、編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

ウィルスの拡散手段などとして、メールに対するセキュリティ対策が重要となっていたが、昨今ではWebが攻撃のターゲットとなる機会が増えている。その具体的な攻撃手段を解説しよう。

Webアプリの脆弱性

 オンラインショッピングサイトやWebメール、さらにオンラインバンキングなど、Webを使ったサービスは社会インフラの重要な要素となっている。だが、重要であるがゆえに、サービスを破壊しようとする愉快犯や、経済的利益を不正に得ようとする犯罪組織のターゲットともなっている。こうしたWebサービスに対する犯罪に使われるケースが多いのがクロスサイトスクリプティング、SQLインジェクションといったWebアプリケーションの脆弱性を利用する攻撃だ。

 クロスサイトスクリプティング(Cross Site Scripting:XSS)は、Webのフォームに入力した文字列を別のページに表示するサーバサイドスクリプトを使ったWebアプリケーションで生じる脆弱性だ。Cross Site Scriptingの略は「CSS」だが、Cascading Style Sheetsと紛らわしいので、XSSを使うのが一般的となっている。通常、フォームを利用するWebアプリケーションは、入力された文字列をチェックし、悪意あるスクリプトが含まれていれば無効化している。このチェックを「サニタイズ」と呼ぶのだが、これが正しく行なわれていない場合、第三者によってWebページ内にスクリプトを埋め込まれてしまうことがある(図1)。これがXSSだ。

図1 クロスサイトスクリプティングの仕組み

 たとえば、銀行のWebサイトでサニタイズが不完全だった場合、正規のオンラインバンキングサイトのページ内に不正な暗証番号入力フォームを作られてしまうことになる。Webブラウザに表示されるURLは銀行のサイトのものであるため、不正なフォームであることをユーザーが気づくことは難しい。

被害の相次ぐSQLインジェクション

 一方、SQLインジェクションは、古くは大量のメールアドレスが流出したカカクコム事件で使われたとみられる脆弱性だ。その後も、多くの情報漏えい事件の原因となっている、非常に危険な脆弱性である。

 たとえば、ユーザーが入力した商品名から取扱店を調べるWebサービスがあったとする。この場合、内部では「商品名Aを検索しろ」というデータベースサーバに対する命令(SQL文)が生成される。ところが、問題のあるサイトでは、ユーザーが入力した商品名の文字列自体にSQL文が埋め込まれていると、このSQL文もデータベースサーバに送信され実行されてしまう。これがSQLインジェクションだ。

 もちろん、本来は商品名にSQL文が含まれていれば、これを無効化する作業(サニタイズ)が行なわれる。しかし、サニタイズが不十分であると、たとえば商品名にメールアドレスを読み出すSQL文を埋め込むことで、データベースに保存されたメールアドレスを盗み出せてしまうのだ。

(次ページ、「メールに代わる「Webからの脅威」」に続く)


 

前へ 1 2 次へ

カテゴリートップへ

この連載の記事
ピックアップ