かずきち。の日記

サーバサイドエンジニアのつぶやき

ソース付き!個人情報流出の手口!SQLinjectionについて。

SQLinjectionとは何でしょうか?

SQLinjectionとはアプリケーション上でRDBで任意条件で使用する場合問わず、クライアントサーバ側でも引き起こすことが出来ます。
攻撃手法は管理者が予期しないSQL文を走らせることになります。
ここで、データの削除、追加、流出が起きます。

多くのアプリケーションでは追加・削除・更新をSQL文を用いて行います。
userIDなどがわからないので、MySQLのデータベースはいじれないのが一般的です。

sql = "SELECT userID,userName from userTable where userID = " + user + ";"

ありがちなデータベースのカラム名を付けているハックされます。
id,age,name,old,content…ありきたりなデータベース名運用をしていると狙われます。
ですが、今回はID項目なので出来ているんじゃないか?という疑問が残ります。

「エクセルデータに見出し語を付けなさい」という上司の指示がinjectionを起こす
会社の上司が「エクセルデータにはIDを割りなさい。」

きちんとしたデータベース教育を受けた人間であれば、そういったアホなことはあまりしたくない。
各企業の個人情報の流出はシステムが脆弱なことではない。
人間的なヒューマンエラーが原因です。
人間はアホなので、見出し語をつけたりインデックス化をする。

エンジニアに必要なことは闇魔術の防衛術である

f:id:kazukichi_0914:20161229143939p:plain

インターネットはHUNTER×HUNTERのハンター裏試験だし、ハリーポッターの闇魔術である。
人間の生活を便利にするプログラミング…
自動車、インターネット、電車、各種様々なデバイスでプログラミングが使われている。
そのヵ所をハックすることができれば、それはノーベル賞ものであるし、それは人間の進歩である。
だからインターネット分野の第一線のエンジニアは必ずセキュリティ分野にやってくる。