SQLインジェクション攻撃

読み:エスキューエル・インジェクションこうげき
外語:SQL injection attack 英語
品詞:名詞

インジェクション攻撃の一つ。

目次

パラメーターSQLコマンドを挿入し、意図しないSQLコマンドを実行させようとするもの。

実際にこれが行なわれた場合、その被害は甚大なものとなる。

実例

例えば、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インジェクション攻撃が絡んでいる。

用語の所属
アタック
関連する用語
インジェクション攻撃
セキュリティホール

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club