このページの本文へ

前へ 1 2 次へ

セキュリティの素朴な疑問を解く 第4回

Q&A形式でセキュリティの基礎を学ぼう

SQLインジェクションやXSSって何されるの?

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

文● 伊藤玄蕃

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

Q.SQLインジェクションはどのような攻撃ですか?

A.Webアプリケーションが持つ欠陥や仕様上の問題点を利用した攻撃です。

狙われるWebサイト

 「SQLインジェクション」は、日本では2005年ごろからWebサイトの攻撃手段として使用されはじめた。ワコールオンラインショップの個人情報漏えい(2005年11月)などのWebサイト攻撃事件にも使用され、情報セキュリティの専門家だけでなく、一般にも名前を知られるようになった。

 SQLインジェクションを簡単に説明すると、Webアプリケーションの脆弱性を利用して、外部からデータベースの内容を不正に操作する攻撃である。具体的には、Webサイトにウイルスを埋め込んで閲覧したユーザーのPCに感染させたり、他のユーザーのクレジットカード番号といった個人情報を表示させて盗み出してしまう。

 そして、2008年3月頃から世界中でこのSQLインジェクション攻撃によるWebサイトの改ざんが多発している。日本国内でも、インターネットを介して発生するセキュリティ情報を発信しているJPCERT/CCから、「SQLインジェクションによるWebサイト改ざんに関する注意喚起」が出されたにもかかわらず、トレンドマイクロのWebサイトの改ざんやネットショップのサウンドハウスの個人情報漏えいなど、多数のWebサイトが被害に遭っている。

 また、SQLインジェクション攻撃によってWebサイトを改ざんし、閲覧者をウイルスに感染させてしまうスクリプトを埋め込むワームも確認されている。

SQLインジェクションとは?

 そもそも、SQLインジェクションのSQL(Structured Query Language)とは、データベースを操作するためのコンピュータ言語である。ショッピングサイトなどの多くは、これを利用して登録者の情報をやり取りしている。具体的にはWebサーバのWebアプリケーションは、ユーザーが入力した情報を基にSQL文を組み立てる。そして、そのSQL文によりデータベースにデータを追加したり、検索やテーブルの更新などを行なっている。このとき、Webアプリケーションがセキュリティ的に無防備であると、ブラウザから入力された「悪意のあるSQL文」をそのままデータベース操作の一部に注入(Injection)する可能性がある。

 具体例を見てみよう。ブラウザから入力された「ユーザーID」に該当するユーザーの情報を、顧客テーブルから取り出して表示するWebアプリケーションを考えてみる。このWebアプリケーションは次のようなSQL文を生成する。

SELECT * FROM 顧客テーブル WHERE userID = '(入力値)';

 通常のユーザーは『0001』などの値を入力する。しかし、悪意のあるユーザーが『'0001' OR '1' = '1'』という文字列を入力してきた場合、Webアプリケーションが生成するSQL文は以下のようになる。

SELECT * FROM 顧客テーブル WHERE userID = '0001' OR '1' = '1';

 このSQL文の意味は、『「userID=0001」または「1=1」の条件が成立するユーザーの情報をよこせ』である。しかし、「1=1」はつねに正しいため、この条件は全ユーザーに対して成立してしまう。そこで、このSQL文の結果を受けた脆弱なWebアプリケーションは、顧客テーブルのすべての情報を表示してしまう(図1)。

図1 SQLインジェクション

(次ページ、「SQLインジェクションへの対策」に続く)


 

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

アクセスランキング

  1. 1位

    デジタル

    「1ミリの曖昧さもなく」データを定義 決め手はトップの「もうExcelは見ません」宣言 

  2. 2位

    ネットワーク

    元Appleの技術者が立ち上げたネットワーク製品が、エンジニアのハートにもぶっささりまくり!「UniFi」ってイケてるぞ!

  3. 3位

    TECH

    夏野氏「もう1年早く移行しておけば」 サイバー攻撃を受けたドワンゴがAWSで進めるセキュリティ改革

  4. 4位

    ITトピック

    IT技術者の生成AI「実装経験」はまだ少数/日本人の70%が感じる「国の衰退」/メーカー研究者の情報収集は様変わり、ほか

  5. 5位

    デジタル

    給与20%増で家や子供が現実に 平均年齢64歳だったバス・タクシー会社の成長話は夢しかなかった

  6. 6位

    ビジネス

    生成AIを使ってるのに成果が出ない日本企業 好転の鍵は“中間管理職”

  7. 7位

    sponsored

    ランサムウェア対策の“最終防衛線” QNAP NAS+ルーターでバックアップをより強固に!

  8. 8位

    ビジネス・開発

    メガネ選びの“わからない”に応える「JINS AI」 わずか3カ月でのローンチで乗り越えた壁

  9. 9位

    サーバー・ストレージ

    インターネットに接続する「超巨大電源タップ」一体、何もの?

  10. 10位

    Team Leaders

    チーム作りの苦労を語ったサイボウズ青野氏とヌーラボ橋本氏の対談が本音過ぎた

集計期間:
2025年06月25日~2025年07月01日
  • 角川アスキー総合研究所