SQLインジェクションとは?
先日、またもやWebサイトの不正アクセス事件がありましたね。
ターゲットは女性向けのサイト「OZmall」です。
その手法は「SQLインジェクション」と呼ばれるものでした。
■OZmallへの不正アクセスの手口は「SQLインジェクション」
報道では「価格.com」もこの攻撃にやられたとのことですね。
でも、「SQLって何?」って方も結構いますよね?
簡単にいうと、SQLはデータベースを操作するための命令です。
イメージとしては、YAHOO!やGoogleなどの検索エンジンを思い浮かべてみてください。
YAHOO!やGoogleが大量に集めたWebページの集まりを「データベース」とすると、検索キーワードという「命令」を与えれば、キーワードにマッチしたWebページが表示されますよね?
この検索キーワードのようなものが「SQL」だと思ってください。
このSQLという命令に対応しているソフトが、Microsoft SQL serverやMySQL、PostgreSQLといったデータベースソフトです。
多くのWebサイトでは、ユーザ情報や商品情報を保存しておくのにこれらのデータベースソフトを使っています。
そして、必要に応じてSQLを使って情報を引き出します。
例えばWebを見ている人が、ブラウザで入力フォームにIDとパスワードを入れるとします。
すると、Webサーバは、その内容をSQLの命令として、裏で動いているデータベースに問い合わせします。
この部分で、SQLインジェクションの問題が発生する場合があるんですね。
どういうことかと言うと、ふつう入力欄には、IDとパスワードの文字列しか入力できません。
でも、ちゃんと制限をかけてない場合、ユーザがSQLの命令文を直接入力して、データベースに指示を与えることができるんです。
例えば、ID・パスワードを入れる入力欄に、「データベースを削除しなさい」というSQLの命令文をユーザが直接入力できたら、大変ですよね?
この問題を避けるためには、Webサーバ側で入力する文字をチェックする等の対応が必要です。
また、その裏で動いているデータベースも、誰にでも命令する権利を与えないという設定にしておくべきです。
これらは、結構初歩的なことなんですが、出来ていないサイトが多いようです。
実際にサイト作成者が知らなかったというケースもあるかもしれないですが、やっぱり行き着くところは、意識の持ち方なんじゃないかと思います。
インターネットの世界では「自分は大丈夫」という考えは、くれぐれも持たないようにしましょうね。