用語集の記事

ARTICLE
用語集

SQLインジェクション

掲載日:2017年1月18日更新日:2024年2月27日

読み:エスキューエルインジェクション

英語名:SQL Injection

SQLインジェクションとは、データベースと連動したWebサイトにWebアプリケーションの脆弱性を利用して、ユーザの入力データを使用し本来意図されたものとは異なるSQLを実行させ、不正なリクエストを送ることでデータベースを改ざんしたり不正に情報を入手する攻撃である。

SQLはデータベースの操作に利用される言語であり、インジェクションは「注入」を意味する

データベースを利用したWebサイトは、ユーザーから送られてくるパラメータを受け取ると、それを基にデータベースを操作するコマンド(SQL文)を作り上げる。そして、データベースにアクセスして該当する情報を引き出し、Webページを生成する。
ところが、URLやフォームのテキスト入力欄などにプログラムが想定していないデータが入力されると、本来閲覧を意図されていない情報が表示され、データベースの内容の書き換えが可能になってしまうことがある。
また、閲覧したユーザーのPCにウイルスを感染させる、通販サイトの利用者のクレジットカード情報が盗み取られる、勝手に注文が実行されるなどの被害が起こり得る。

SQLインジェクションが発生する原因は、パラメータをSQL文に埋め込む際にチェックが行なわれていないことである。SQLインジェクションを防ぐには、パラメータ中にSQLとして 機能する文字が含まれていないか調べ、含まれていた場合はこれを削除したり別の文字列に変換するといった処理(サニタイジング)が必要である。