SQLインジェクション
こんにちは、一生と言います。
はじめに
IDとパスワード
これは今ではいろいろなサイトで必要です。
顔が見えない以上、
相手を特定するにはないと分かりませんよね。
そんなIDとパスワードを入力するときに出てくるページが、
ログインフォーム
です。
大体こんなページに行きますよね。
そんなとき、
IDとパスワードがないと入れないんだから、
そのサイトは絶対安全だ
と思っていませんか?
そうとは限りません
ログインフォームなどから悪さをすることができます。
それが、
SQLインジェクション
です。
今回はそんな、
SQLインジェクションについて
紹介させていただきます。
この記事では主に、
を参考にさせていただきました。
ログインフォームある = セキュリティはOK
確かにそう考えられそうです。
ドアに鍵がかかっているようなものですからね。
しかし、そのフォームでも悪さができるのです。
それではよろしくお願いします。
こんな人にオススメ!!
- ログインフォーム = 安全と考えている人
- 会社でセキュリティ関係の任された人
ログインフォームってどんなことをしているの?
まず先にログインフォームがどんなことをしているかについて学びましょう。
ログインフォーム
いろいろなサイトが個人を特定するために使用するものです。
上の例で考えると、IDとパスワードを入力してもらうことになります。
こちらは大雑把にいうと、
このような感じのことを行なっています。
データベースに保存してあるデータと
照合するということです。
つまり、
項目の二つが正しいければOK
ということです。
そしてそのサーバーとデータベース間で、
SQL(StructuredQueryLanguage)と呼ばれる言語
出典:「サイバー攻撃 ネット世界の裏側で起きていること」より
を使用します。
どうやって悪さをするの?
今の流れを見て、
どちらかさえ間違っていたらダメなんだから、
やっぱり安全だ
悪さできるとしたら、
データそのものを変えないといけないんじゃない?
と思いますよね。
しかし、もう一度流れを見てください。
普段なら、
- idにはid
- パスワードにはパスワード
を入れます。
利用者は当然そうですし、
悪さする人もそうだと思いますよね。
つまり、
idとパスワードの両方を知っていないと入れない
ということです。
一つでは不安ですが、二つあれば安全と思いますよね。
しかし、
このように読み取れるように入れたらどうなるでしょうか?
この場合、パスワードの部分は、
“パスワードが空白”または“1=1″のどちらかが正しいなら正しい
となります。
1=1はもちろん正しいです。
つまり、
id
そのidさえあれば正しい
パスワード
1=1は正しい
となり、共に正しいになってしまいます。
つまり、パスワードがわからなくても入れてしまいます。
これが、
SQLインジェクション
です。
SQLインジェクションを行うことで、
項目があっていなくても入ることができる
ようになってしまうのです。
ログインフォームでどんな悪さができるの?
ログインフォームを利用してできる悪さは、
- 他の人になりすまして入れることができる
- データベースの中身を変更できる
などがあります。
他の人になりすまして入れることができる
フォームなどでその人と特定するのは、主にidです。
idが名前の代わりになっています。
そのため、idは誰とも被ってはいけません。
そのため、
id
誰かのid
パスワード
1=1
で、その誰かになって色々設定が変えることができます。
中にはその人の住所や登録内容が入っています。
データベースの中身を変更できる
ユーザー側のログインフォームならその人になりすますことができます。
しかし、サーバー側のログインフォームなら、
データベースに入ることができるようになってしまう
のです。
サーバー側だって、
idやパスワードで鍵をかっていますよね。
データベース側に入られると、たくさんの人のデータが見ることができます。
そのため、
- データの変更
- データの削除
- データの盗み見
などができてしまうのです。
どんな対策ができる?
実際、
SQLインジェクションの脆弱性が存在しても、
利用者にできる対策は存在しない
出典:「図解まるわかりセキュリティのしくみ」より
と書かれています。
問題はあくまでサーバーとデータベース側になります。
なぜならSQLの脆弱性は主に、
サーバーとデータベースの間
だからです。
ユーザーの扱える場所ではないのです。
そのため、ユーザーとしては、
- 登録する前にそのサイトに問題ないか検索する
- idを少しでも複雑にする
ようにしましょう。
今までに問題があったサイトなら検索すれば出てくるでしょう。
また、idがわからなければ自分とは特定されにくくなります。
また、サーバー側としては、
ユーザの入力によってSQL文が想定外の形になるのを防ぐ
出典:「サイバー攻撃 ネット世界の裏側で起きていること」より
ようにすることです。
想定外になる危険のある言葉は最初から打てない
ようにする必要があります。
たまに、パスワードで記号はいくつかしか使えないのがありますよね。
終わりに
今回は、
SQLインジェクションについて
についての本を紹介させていただきました。
SQLインジェクションとは、ログインフォームなどに対する悪さの一つです。
今では、たくさんのWebサイトがidやパスワードを使用してログインをする必要があります。
それがドアの鍵になってくれています。
しかしサイトによっては、
その鍵穴自体に悪さをすることができるものもある
ということです。
それがSQLインジェクションです。
そして厄介なことは、
SQLインジェクションの脆弱性が存在しても、
利用者にできる対策は存在しない
出典:「図解まるわかりセキュリティのしくみ」より
ことです。
問題が自分達側で起きていません。
そのため、
- 登録する前にそのサイトに問題ないか検索する
- idを少しでも複雑にする
などできる限りの注意を払うようにしましょう。
また、今回この記事によって、
もう怖くてどのサイトも登録したくないよ!
と感じた人もいると思います。
大体の有名サイトや長く続いているサイトは対策をしてくれていると思います。
当然、100%とは言えませんが。
そのため、たくさんの人が使っているサイトなどでは怖がりすぎないようにしましょう。
でないと、スマホなども使えなくなってしますからね。
危険なのは、
セキュリティもされてないかもしれないあまり使われていないサイトへの登録
です。
これが自分からできる対策になります。
これらの本では、他にいろいろなセキュリティのことが書かれています。
この記事を読んで興味を持った方は、ぜひ読んでみてください。
奥付
本は、人の知識の宝庫です。
一冊の本を全て取り入れるのは大変です。
そのため、何か一つでも自分に取り入れてみましょう。
それだけで、自分の成長が見え、とても楽しいですよ。
最後まで読んでいただき、ありがとうございました。
コメント