ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
インジェクション攻撃の一つ。
例えば、Webより入力されたユーザー名$uidと、パスワード$passwordを得て、DBを検索することを想定する。この時、次のようなSQLを書いたとする。
SELECT * FROM users WHERE UID='$uid' AND PASSWORD='$password'
しかしこれは、非常に悪い例である。
例えば、この時ユーザー名は適当にaaa、パスワードに次が書かれたとする。
'; DROP TABLE users;--
すると、完成したSQLは次のようになる。
SELECT * FROM users WHERE UID='aaa' AND PASSWORD=''; DROP TABLE users;--'
こうなると、SELECT文はどうでもよく、その後にDROP文によってデータベースのユーザーマスターが消滅するため、ユーザー管理機構と、そのサイトの機能全てがその時点をもって壊滅する。バックアップから戻すとしても、相当なダメージとなるだろう。
ちなみに、二つのハイフン(--)は、以降はコメントであり無視するという意味になる。なぜこのようなセキュリティホールをSQLの仕様に導入したのかは定かではない。
被害としてはデータベースが破壊され、場合によっては情報漏洩が起きうる。これだけでも深刻な被害であるが、拡張ストアドプロシージャが利用可能になっているとOSコマンドインジェクション攻撃も行なわれる可能性があり、極めて危険である。
近年多発しているWebサイトを通じた大規模情報流出の多くは、SQLインジェクション攻撃が絡んでいる。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます