SQL
セキュリティ
インジェクション

SQLインジェクションとは?

SQLインジェクションは、調べると

SQLインジェクション(英: SQL Injection)とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。 また、その攻撃を可能とする脆弱性のことである。

言っていることは理解できたのですが、具体的にどうやって攻撃されるの?ということで簡単ですが書いていきます。

テキスト上でDBにアクセスできる


例えば、パスワードを入力する欄があるとします。
そこに検索条件を入れてしまえば、DBの内容を変更できたり、削除したり、検索できたりすること。

いわゆる情報漏えいとなり、大変なことになってしまうのだが
SQLインジェクションを行う人も、サイトのセキュリティーがしっかりしていない方もどちらも問題があるといえる。

まとめるとこんな感じ
2.jpg

パスワードの入力欄に 適当なパスワード or "A" = "A"
or文を使うことによって、必然的に「真」にするとことができてしまう。

これをSQL文にすると

SELECT * FROM ユーザマスタ WHERE パスワード = 0000 OR 'A' = 'A'

このようになり、全体として「真」になるので結果的にログインが出来てしまう構造だ。

有名サイトでは脆弱なサイトは少ないが、個人サイトだと中には脆弱なサイトも含まれているらしい。
セキュリティーもしっかりと学ばないといけないなと怖いな、と感じました。