響きがかっこいい単語、今回のテーマはSQLインジェクション!
最近、ニュースなどで「情報流出」や「不正アクセス」といった言葉を耳にすることが増えました。何気なくネットを使っているだけなのに大事な個人情報が流出してしまう可能性がある・・・怖い時代ですね。
SQLインジェクションは、個人情報が根こそぎ盗まれる原因にもなる、サイバー攻撃の中でも被害が大きくなりやすいもののひとつなんです。
「SQLインジェクション」のことば診断
当サイトでは、響きがかっこよく、知的好奇心をくすぐる珠玉の単語を厳選して、中学生から大人までわかりやすく紹介しています。
今回のテーマ「SQLインジェクション」について、「身近さ」「レア度」「難解度」をそれぞれ診断してみました!
身近さ:4.0(どれくらい身近な世界の話か)
日常生活で直接意識することはほとんどありませんが、私たちが使うWebサービスの安全性に関わる重要な問題です。
インターネットを使用する以上、常にSQLインジェクションの脅威には晒されることになります。
レア度:4.0(日常生活での遭遇頻度)
セキュリティやIT業界では頻繁に話題になりますが、一般の人が会話で使うことはほぼありません。
難解度:4.0(言葉の意味理解の難易度)
「データベースへの不正アクセスの手法」という概要は理解しやすいですが、実際の仕組みや防御方法まで理解するにはITやプログラミングの知識が必要です。
技術的な背景がないとイメージしづらい言葉でしょう。逆にITエンジニアであれば割と理解しやすいサイバー攻撃のひとつです。
SQLインジェクションって何?

SQLインジェクションを理解するためにまず、「SQL」という言葉を簡単に説明しましょう。
SQL(エスキューエル)は、ITの世界でアプリやWebサイトを作成しているエンジニアが活用しているデータベースを操作するための言語のことです。開発経験者でもない限りイメージしづらいしょうが、なんとなくそういうもんなんだなーと思っていただければOKです!
あなたがスマートフォンやパソコンでWebサイトやアプリを使用しているとき、たいていのものが裏ではデータベースやSQLを使用していると思っていいでしょう。
SNSの投稿内容、ニュース記事の内容、通販サイトの商品情報や個人情報、ほとんどすべてがデータベースに登録されています。
アプリやWebサイトはこうしたデータベースから必要な情報をピックアップしてスマートフォンやパソコンの画面にコンテンツを表示しているわけなんです。
そして、データベースから情報を取り出すときに使用するのがSQLという言語なんですね。
SQLについてもう少し詳しく
専門的になりますが、実際のSQLをちょっとだけ見てみましょう。
例えば、あなたがとある通販サイトにログインするときを例に考えてみましょう。
システムはあなたがログイン画面で入力したIDとパスワードの組み合わせがデータベースに登録済みかを確認ことになります。その時には↓のようなSQLがシステムの内部で動いているんです。
SELECT * FROM users WHERE username = '入力されたID' AND password = '入力されたパスワード';システム内部でこのSQLが実行され、位置する情報があればログイン成功、存在しなければログイン失敗になるんです。
しかし、こうしたSQLが実行される部分のシステムの作りがまずいと、悪意のある攻撃者がデータベースを勝手に操作する糸口なってしまう可能性があるんです。
このときにデータベースを勝手に操作するために使われるのが、「特定の文字を入力(注入)してSQL自体を誤作動させる」という手段です。
注入は英語でinjection(インジェクション)。
つまり、SQLに特定の文字を注入するという攻撃方法からSQLインジェクションと呼ばれているのです。
SQLインジェクションにより発生する被害例
サイバー攻撃の手段はSQLインジェクション以外にも色々ありますが、数あるサイバー攻撃手段の中でもSQLインジェクションは最悪レベルの損害をもたらします。
具体的な被害例としては以下の通りです
- Webサイトやアプリを使用不可能にする(場合によっては二度と動かせなくなることも)
- Webサイトの改ざん(内容を好き勝手に書き換えられてしまう)
- アカウントの乗っ取り
- 個人情報流出
これは一例です。言ってしまえば、サイバー攻撃により起こり得る最悪な状況がすべて引き起こせてしまうといっても過言でありません。
もしあなたがマンションに住んでいたとして、そのマンションのマスターキーをどこの誰かもわからない人物が手に入れてしまったと考えると怖いですよね・・・。
全ての部屋に入り放題、物も盗み放題、イタズラもし放題、その気になれば全て破壊してしまうこともできる。
SQLインジェクションの被害を受けたWebサイトはまさにそんな状態になってしまうんです。
実際に起こった被害事例
日本でも、SQLインジェクションによる被害は過去に何度も発生しています。
例えば、2013年にはセガのゲーム関連サイト「SEGA ID」が攻撃を受け、約130万人分の個人情報が流出しました。
この攻撃では、会員のメールアドレスや暗号化されたパスワードが盗まれ、一部のアカウントが不正に利用されるという被害が発生しました。
このような事件が起こると、被害を受けた企業は信用を失い、多額の損害賠償を負うことになってしまいます。
どうすれば防げる?
SQLインジェクションの被害を防ぐためには、まずはシステムを開発する側がSQLインジェクションが起こり得ない作りにするのが最優先です。
幸い、SQLインジェクションの対策方法は確立されているため対策は難しくはなく、イマドキの普通の開発方法でシステムを作れば基本的にSQLインジェクションは起こりにくくなっています。
とはいえ、うっかりミスやチェック漏れがあったり、システム上の少し特殊な仕様になっている部分では、SQLインジェクション対策が不足してしまう可能性があります。
ここまではシステムを開発する側の対策でした。アプリやシステムを利用する私達はなにか対策できるでしょうか?
結論を言ってしまうと、ユーザーである我々は基本的に対策のしようがありません・・・。
自分が使っているアプリやWebサイトにSQLインジェクションの脆弱性がある以上、そのサイトで登録したあなたに関する情報は盗まれてしまう可能性があるということになります。
ただ、万が一被害を受けてしまった場合に、被害を最小限にするための対策は出来ます。
SQLインジェクション対策としてユーザーができること
SQLインジェクションはシステムの問題であり、基本的には開発者が対策をするべきものです。しかし、ユーザーとしても以下の点に気をつけることで被害を防ぎやすくなる。
- パスワードの使い回しをしない
- もし一つのサイトで情報が漏れたとしても、他のサービスで悪用されるのを防げる。
- 怪しいサイトに個人情報を登録しない
- 個人開発のサイト、マイナーなサービス、海外の怪しいサイトはセキュリティへの意識が低くSQLインジェクションなどのサイバー攻撃に対する対策が甘いことがある。
とはいえ、前述の通り大手企業のサービスでSQLインジェクションによる被害が発生することもあるので、やはりサイバー攻撃への対策を個人でするのは難しいものである。
- 個人開発のサイト、マイナーなサービス、海外の怪しいサイトはセキュリティへの意識が低くSQLインジェクションなどのサイバー攻撃に対する対策が甘いことがある。
ユーザーも「自分の情報を守る意識」を持つことで、被害を最小限に抑えることができる可能性はあるんです。
まとめ
今回は、響きがかっこいい言葉としてSQLインジェクションについて紹介しました。
SQLインジェクションは、適切な対策をしていないと誰でも被害を受ける可能性がある危険なサイバー攻撃です。
しかし、システムを開発する人が適切な対策をしていてくれれば防ぐことは十分可能です。開発者には責任を持って開発をしていただきたいものですね!
一方、開発する側だけでなく、我々一般ユーザーも「パスワードの使い回しをしない」「怪しいサイトにログイン情報を入力しない」などの対策を取ることはできるので、自分の身を守るためにもこういった対策は惜しまずにやっていきたいものですね!



コメント