👏

【セキュリティ】SQLインジェクションについて

2023/02/28に公開

概要

SQLインジェクションとは、アプリケーションの開発者が意図しない形で、第三者がSQLコマンドを悪用してデータベースの情報に不正にアクセスすることで、データベースの情報を搾取や改竄する攻撃手法のことである。

攻撃の仕組み

ユーザがログインリクエストを送る際、下記のようなコマンドが実行される。このようなコマンドであれば問題ないが、もし悪意ある攻撃者が、何らかのSQLコマンドを追記した場合はどうだろう。

簡単な例として、ログインコマンドに加えて、パスワードを更新するSQLを加える場合がある。このような場合、パスワードが書き換えられてしまうので、ユーザアカウントに対して不正アクセスがされる。

もしくは、ユーザ名を通じて、ユーザテーブルの全ての情報を取得し出力するコマンドが実行されてしまった場合は、どうなるか。全てのユーザのログイン情報が抜き取られてしまう。そのため、まず大前提として、ユーザ情報は平文でデータベース上に保管すべきではない。

引用

https://www.jbsvc.co.jp/useful/security/sql-injection.html
https://www.shadan-kun.com/waf/sql_injection/
https://www.udacity.com/course/full-stack-web-developer-nanodegree--nd0044

Discussion