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

SQLインジェクション 【SQL injection】

概要

SQLインジェクション(SQL injection)とは、データベースと連動したWebアプリケーションなどに対する攻撃手法の一つで、検索文字列など外部から指定するパラメータの一部にSQL文の断片などを混入させ不正な操作を行うもの。また、そのような攻撃を可能にする脆弱性

データベースを利用するWebサイトの中には閲覧者の求めに応じて動的にプログラムを起動し、データベース管理システムDBMS)へデータの検索や更新などを依頼するものがあるが、その際に「SQL」(Structured Query Language)と呼ばれる問い合わせ言語が標準的に利用される。

検索機能などを実装するために、閲覧者がフォームなどに入力した文字列をプログラムが受け取り、あらかじめ用意されたSELECT文などの一部に埋め込んでDBMSへ渡し、検索と該当データの抽出を依頼する処理がよく行われる。

その際、悪意のある攻撃者が検索文字列として引用符や条件式などを組み合わせたSQL文の断片を渡すことにより、開発者が想定していないSQL文が生成・実行され、本来得られないはずのデータを出力してしまったり、保存されたデータが破壊・改竄されることがある。“injection” は「注入」の意。

SQLインジェクションの被害で最も多いのは個人情報などデータベースに保存された重要なデータや機密データの漏洩で、過去に名簿やアカウントリストなどの流出事件が様々なサイトで発生している。また、Webサイトの改竄に悪用された場合、Webページ上にWebブラウザを攻撃するコードなどを埋め込まれる場合もあり、サイトを訪れた閲覧者に二次被害が広がってしまう。

対策としては、単純な文字列連結で動的にSQL文を生成するのをやめてプレースホルダバインド機構)やプリペアードクエリ(プリペアードステートメント)のような仕組みを活用したり、渡された入力値を入念にチェックして特定の文字を適切にエスケープ(無害な文字に置換)するといった手法がよく知られ、これら複数の手法を組みわせることも推奨されている。

(2018.7.20更新)

他の用語辞典による「SQLインジェクション」の解説 (外部サイト)

資格試験などの「SQLインジェクション」の出題履歴

▼ 基本情報技術者試験
令6公 問10】 SQLインジェクションの対策として,有効なものはどれか。
令5修6 問33】 安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
攻擊対策
SQLインジェクションSQL文の組立てに静的プレースホルダを使用する。
令4修12 問41】 SQLインジェクション攻撃による被害を防ぐ方法はどれか。
令4修6 問41】 Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
令3修1 問41】 SQLインジェクション攻撃による被害を防ぐ方法はどれか。
令2修7 問35】 SQLインジェクション攻撃の説明として,適切なものはどれか。
令2修1 問43】 安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
攻擊対策
SQLインジェクションSQL文の組立てに静的プレースホルダを使用する。
令1修12 問39】 Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
令1修7 問41】 SQLインジェクション攻撃による被害を防ぐ方法はどれか。
平30修12 問38】 SQLインジェクション攻撃の説明はどれか。
平30春 問41】 SQLインジェクション攻撃による被害を防ぐ方法はどれか。
平30修1 問42】 安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
攻擊対策
SQLインジェクションSQL文の組立てに静的プレースホルダを使用する。
平29秋 問39】 SQLインジェクション攻撃の説明はどれか。
平29修1 問40】 SQLインジェクション攻撃を防ぐ方法はどれか。
平28修6 問37】 SQLインジェクション攻撃の説明はどれか。
平28春 問37】 SQLインジェクション攻撃の説明として,適切なものはどれか。
平28修1 問39】 Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
平27秋 問42】 SQLインジェクション攻撃を防ぐ方法はどれか。
平27修6 問39】 安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
攻擊対策
SQLインジェクションSQL文の組立てに静的プレースホルダを使用する。
平27春 問42】 SQLインジェクション攻撃の説明はどれか。
平26修7 問39】 SQLインジェクション攻撃を防ぐ方法はどれか。
平25修12 問42】 SQLインジェクション攻撃の説明はどれか。
平25春 問40】 SQLインジェクション攻撃を防ぐ方法はどれか。
平24秋 問40】 SQLインジェクション攻撃の説明はどれか。
平23修7 問44】 SQLインジェクション攻撃を防ぐ方法はどれか。
平23修6 問44】 SQLインジェクション攻撃の説明はどれか。
平21修7 問44】 Webアプリケーションの脅威とそのセキュリティ対策の適切な組合せはどれか。