Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on 6月 2, 2005 in ハッキング | 0 comments

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

先日、またもやWebサイトの不正アクセス事件がありましたね。

ターゲットは女性向けのサイト「OZmall」です。

その手法は「SQLインジェクション」と呼ばれるものでした。

■OZmallへの不正アクセスの手口は「SQLインジェクション」

報道では「価格.com」もこの攻撃にやられたとのことですね。

でも、「SQLって何?」って方も結構いますよね?

簡単にいうと、SQLはデータベースを操作するための命令です。

イメージとしては、YAHOO!やGoogleなどの検索エンジンを思い浮かべてみてください。

YAHOO!やGoogleが大量に集めたWebページの集まりを「データベース」とすると、検索キーワードという「命令」を与えれば、キーワードにマッチしたWebページが表示されますよね?

この検索キーワードのようなものが「SQL」だと思ってください。

このSQLという命令に対応しているソフトが、Microsoft SQL serverMySQLPostgreSQLといったデータベースソフトです。

多くのWebサイトでは、ユーザ情報や商品情報を保存しておくのにこれらのデータベースソフトを使っています。

そして、必要に応じてSQLを使って情報を引き出します。

例えばWebを見ている人が、ブラウザで入力フォームにIDとパスワードを入れるとします。

すると、Webサーバは、その内容をSQLの命令として、裏で動いているデータベースに問い合わせします。

この部分で、SQLインジェクションの問題が発生する場合があるんですね。

どういうことかと言うと、ふつう入力欄には、IDとパスワードの文字列しか入力できません。

でも、ちゃんと制限をかけてない場合、ユーザがSQLの命令文を直接入力して、データベースに指示を与えることができるんです。

例えば、ID・パスワードを入れる入力欄に、「データベースを削除しなさい」というSQLの命令文をユーザが直接入力できたら、大変ですよね?

この問題を避けるためには、Webサーバ側で入力する文字をチェックする等の対応が必要です。

また、その裏で動いているデータベースも、誰にでも命令する権利を与えないという設定にしておくべきです。

これらは、結構初歩的なことなんですが、出来ていないサイトが多いようです。

実際にサイト作成者が知らなかったというケースもあるかもしれないですが、やっぱり行き着くところは、意識の持ち方なんじゃないかと思います。

インターネットの世界では「自分は大丈夫」という考えは、くれぐれも持たないようにしましょうね。