見出し画像

ネット初心者でもわかるSQLインジェクション

エンジニアの市川です。
最近、コロナワクチンに関する話題で
「コロナワクチン接種予約システムにSQLインジェクションで攻撃することができた」というニュースが報じられていました。 

SQLインジェクションとは、いわゆるサイバー攻撃の一種なのですが、実際にどんな危険があるのかを、あまりネットに詳しく無い方にもわかりやすいよう、ざっくりと解説していきます。

データベースを図書館に置き換える

まず、SQLインジェクションを説明する前に「データベース」について少しだけ触れていきます。イメージのつかない方でも、 上記が”データを扱っている何か” だということは分かるかと思います。
ここでは、データベースを、本(データ)を大量に管理している図書館に置き換えて考えてみます。
ただ、この図書館にある本には、商品の名前や値段が書かれた本が入っているだけではなく、個人情報が書かれている本も入っています...!

図書館でSQLインジェクションが発生した場合

通常、図書館で本を探す時に、職員さんに「○○という本を探しています」と相談すると、きっと〇〇という本を探して持ってきてくれます。

これはデータベースでも同様のことが行われており、「〇〇というデータを探しています」と相談すると、データベースの中にいる職員さんのようなシステムが〇〇というデータを探して持ってきてくれます。

ではもし、職員さんに「他人の個人情報が書かれた本を探しています」と相談したらどうでしょうか?
おそらく断られてしまうでしょう。セキュリティの観点から、それが良くない事だという判断ができるからです。

これは、「職員による情報セキュリティ対策が行われている」ことにより、「図書館のセキュリティが担保されている」とも言い換えることができます。

では、この職員さんに情報セキュリティの概念が無かった場合はどうなるでしょう。
先ほどのように従業員さんに「他人の個人情報が書かれた本を探しています」と相談したところ、職員さんは何の悪気もなく、他人の個人情報が書かれた本を探して持ってきてしまうでしょう。
まさにこれが、SQLインジェクションが発生した状況に例えられるという訳です。 

ただ、実際は単に本を持ってきてしまうだけではなく、「他人の個人情報を書き換えて」とお願いして、勝手に個人情報を改ざんさせることも可能です...!

まとめ

画像1

以上のように、SQLインジェクションとは、データベースを不正に操作するサイバー攻撃のことであり、 データベースから不正にデータを入手したり、改ざんすることができてしまうものです。

SQLインジェクションのSQLとは「データベースが認識できる言語」という意味で、IT業界におけるインジェクションとは「データベースやプログラムの脆弱(ぜいじゃく)性を利用した、サイバー攻撃や不正アクセス」の総称になります。

先ほどの例で言うと、職員さんに相談していた「○○という本を探しています」「他人の個人情報が書かれた本を探しています」という言葉は、日本人の職員さんに対する日本語を使った相談ですが、 データベースに対しては ”SQLを使った文章” で相談すること。のようなイメージです。

最後に

通常であれば、データサーバーのセキュリティ対策はしっかりとしたものが多い為、滅多に発生することはありませんが、何かしらの理由で対策が不足していた場合、大きなリスクを伴います。

基本的には、そのようなリスクを避ける為にどんなコードを書くかという実装や、開発におけるしっかりとしたテスト工程を経て、世の中の様々なWebサイトやアプリがつくられています。

意外と身近にあるサイバー攻撃。とり返しがつかなくなってしまうようなリスクを未然に防ぐためにも、できる対策はしっかりしていきたいですね...!


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?