2006年02月23日(木)

SQLインジェクションって

テーマ:ソフトウェア

SQLインジェクションって言葉ご存知ですか?


WEBアプリ開発者なら常識なのかもしれません。

恥ずかしながら私は先ほど初めてこの言葉を知りました。

ネットで調べ物をしてたときに引っかかりました。


どういうことかというと、ログイン画面のチェックロジックが以下のようなSQLになっていた場合、


SELECT * FROM user WHERE userid='" & userId & "' AND password='" & password & "'"


ユーザ名、パスワード欄に「' OR 'A'='A」と入力すると、実行されるSQL文は、

SELECT * FROM user WHERE userid='' OR 'A'='A' AND password='' OR 'A'='A'となります。


このSQL文だと、WHERE句に指定した条件が変わってしまい、ログイン可能となってしまいます。

さらに、ユーザIDが分かっていれば、普通のログインとなんら変わらない状態でシステムが利用可能状態となりますので、ログインチェックの意味がなくなります。


こういったSQLの差込をすることをSQLインジェクションというらしいです。

実装によっては、DELETE文やUPDATE文も差し込める可能性があります。


何でも以前のカカクコムの情報流出事件は、この方法が使われたとか?


SQLインジェクションができるってのは、明らかにシステムのバグで、原因がはっきりすれば、作った側にも責任が生じるんじゃないかと思います。


私は、今まで外部に公開しない、社内専用の業務システム開発がほとんどでしたので、あまり気にしたことが無く、ログインロジックは実装するものの、実運用ではユーザが1種類しかなかったり、パスワードを設定していなかったり、ユーザ名とパスワードが同じだったりと、作る側も、使う側もセキュリティをあまり意識していなかったので、多分今まで作ったシステムの中にもこの手法が使えてしまうものがあるような気がします。


SQL文を入力欄に書くなんてテストはやっていませんし。



ちょっと気になって、今作っているシステムのログイン画面で、

同じように入力してみたところ・・ログインできてしまいました!!


まぁ、今作っているシステムは、ログイン画面どうこう以前に、URL直書きすれば好きな画面を直接開けてしまったり、重要な引数をQueryStringで渡していて丸見えなので、セキュリティなんて無いに等しいのですが。


もっと真剣に考えていかなければいけません。

まだまだ勉強不足です。

コメント

[コメントをする]

1 ■はじめまして

こんにちわ♪ ランキングから やって来ました。

ブログアフィリエイトで小金もちです

とても充実した内容で驚きました。

これからもよろしくお願いしますね。

応援していきま~す♪

2 ■無題

はじめまして。みづきと申します。
初コメントします。
夫の転勤で引越ししてやっと落ち着いたところです。
最近インターネットを始めましたが、本当に便利ですね。
ブログもお気に入りです。
もっと早く始めるんだった、って思っています。
北陸に居ながら新居を探せるんだもの。
私もブログに挑戦しようかなぁ・・・
みづきでした。

3 ■訪問しました

愛と申します


アフィリエイトでお買い物したいです
ネット勉強しますね

ではまた

4 ■はじめまして

ひろしと申します

ジャンルを問わず、ブログが大好きです
ライブドアでブログしてます
恋愛日記を書いてます

よろしくお願いします
ではまた

5 ■アダルトな時間には優雅な楽しみがあるのです

アダルト

6 ■アダルト

アダルトな一時を楽しめる…素敵なアダルトライフを求める女性様より朗報です。

7 ■アダルト

アダルトサークルをご紹介!素敵なきっかけ探し!アダルト好きな方にはお薦め

コメント投稿

一緒にプレゼントも贈ろう!

Amebaおすすめキーワード

    アメーバに会員登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト