読み方 : エスキューエルインジェクション
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インジェクション」の関連リンク (外部サイト)
他の用語辞典による「SQLインジェクション」の解説 (外部サイト)
- ウィキペディア「SQLインジェクション」
- 総務省 国民のためのサイバーセキュリティサイト 用語集「SQLインジェクション」
- imidas 時事用語事典「SQLインジェクション」
- 日経 xTECH Networkキーワード「SQLインジェクション」
- MDN Web Docs 用語集「SQL インジェクション」
- JPNIC インターネット用語1分解説「SQLインジェクション」
- SOMPO CYBER SECURITY サイバーセキュリティ用語集「SQLインジェクション」
- @IT セキュリティ用語事典「SQLインジェクション」
- IDCフロンティア クラウド・データセンター用語集「SQLインジェクション」
- Insider's Computer Dictionary「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アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
|