SQLインジェクションは、調べると
SQLインジェクション(英: SQL Injection)とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。 また、その攻撃を可能とする脆弱性のことである。
言っていることは理解できたのですが、具体的にどうやって攻撃されるの?ということで簡単ですが書いていきます。
テキスト上でDBにアクセスできる
例えば、パスワードを入力する欄があるとします。
そこに検索条件を入れてしまえば、DBの内容を変更できたり、削除したり、検索できたりすること。
いわゆる情報漏えいとなり、大変なことになってしまうのだが
SQLインジェクションを行う人も、サイトのセキュリティーがしっかりしていない方もどちらも問題があるといえる。
パスワードの入力欄に 適当なパスワード or "A" = "A"
or文を使うことによって、必然的に「真」にするとことができてしまう。
これをSQL文にすると
SELECT * FROM ユーザマスタ WHERE パスワード = 0000 OR 'A' = 'A'
このようになり、全体として「真」になるので結果的にログインが出来てしまう構造だ。
有名サイトでは脆弱なサイトは少ないが、個人サイトだと中には脆弱なサイトも含まれているらしい。
セキュリティーもしっかりと学ばないといけないなと怖いな、と感じました。