SQLインジェクションとは?えすきゅーえるいんじぇくしょん
SQLインジェクションとは、利用者の入力値がSQL文の構造の一部として解釈されることを悪用し、開発者が意図しない問合せを実行させる攻撃。認証の回避、データの窃取・改ざん・削除に加え、DBMSの拡張機能を介したOSコマンド実行にまで至ることがある。
最終更新:2026-10-06
この語が出る過去問を解く →背景
SQL文を文字列連結で組み立てる実装では、値と命令の区別が文字列の中にしか存在しない。引用符を閉じる入力を1つ受け取った時点で、以降は攻撃者が書いた命令として読まれる。処理系に「ここは値である」と先に宣言してから値を渡すプレースホルダが用意されたのは、この境界を実装者の注意力ではなく仕組みで守るためである。
具体例
ログイン画面のパスワード欄に条件式を常に真にする文字列を入れると、WHERE句が全行に一致してしまう。JavaのPreparedStatementやRailsのプレースホルダのように、SQLの構造を先に確定してから値を渡すAPIを使えば、値に何を書かれても構造は変わらない。
試験での引っ掛け
根本対策は静的プレースホルダ(バインド機構)でSQL文の構造を固定すること。エスケープ処理は実装を誤りやすい次善策、入力長の制限やWAFは緩和策、DBユーザの権限最小化は被害の限定策で、いずれも根本対策と区別して答える。データの暗号化はこの攻撃を防がない。
関連用語
出た過去問
出典:平成28年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問17(IPA)
SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
正解:プレースホルダを利用する。 / データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:プレースホルダとDB権限最小化がSQLi対策の要
SQLインジェクションの根本対策は、プレースホルダ(バインド機構)を使ってSQL文の構造と値を分離することです。加えて実装以外の対策として、アプリが使うデータベースアカウントの権限を必要最小限に絞れば、万一侵入されても被害範囲を限定できます。この2つの組合せが適切です。
出典:平成30年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17(IPA)
SQLインジェクション対策について,Webアプリケーションの実装における対策と,Webアプリケーションの実装以外の対策として,ともに適切なものはどれか。
正解:実装における対策:プレースホルダを利用する。 / 実装以外の対策:データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:SQL注入はプレースホルダで防ぎDB権限最小化で被害を抑える
SQLインジェクションの実装面での根本対策は、プレースホルダを用いた静的なSQL組立て(バインド機構)である。値をSQL文の文字列に連結せず、パラメタとして渡すため、入力に構文要素が混じっても命令としては解釈されない。加えて実装以外の備えとして、アプリが使うDBアカウントの権限を必要最小限に絞れば、万一注入されても被害範囲を限定できる。
出典:令和元年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問17(IPA)
SQLインジェクション対策について、Webアプリケーションプログラムの実装における対策と、Webアプリケーションプログラムの実装以外の対策として、ともに適切なも…
正解:プレースホルダを利用する。
要点:SQLインジェクションはプレースホルダ+DB権限最小化で防ぐ
SQLインジェクションはアプリケーションがSQL文を文字列連結で組み立てることに起因するため、実装面の対策はプレースホルダ(バインド機構)を使い、値をSQL文の構造から切り離すことが最も確実である。実装以外の対策としては、アプリケーションが使うデータベースアカウントの権限を必要最小限に絞り、万一侵入されたときの被害範囲を限定する多層防御が有効である。
出典:令和3年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問12(IPA)
安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
正解:SQLインジェクション ─ SQL文の組立てに静的プレースホルダを使用する。
要点:SQLインジェクション対策の本命は静的プレースホルダ
SQLインジェクションの根本対策は、SQL文の骨格をあらかじめ確定させ、値を後から安全に埋め込むプレースホルダの利用である。特に静的プレースホルダはデータベースエンジン側でSQL文を先に構文解析するため、値に何が入っても構文が変化せず、確実に攻撃を防げる。他の三つは、外部リソースの無制限な取り込み、状態変更へのGETの使用、セッションIDの固定化と、いずれも脆弱性を招く実装である。
出典:令和5年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17(IPA)
SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組みとして,適切なも…
正解:プレースホルダを利用する。/Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:SQLインジェクションはプレースホルダとDB権限の最小化で守る
SQLインジェクションの実装上の根本対策はプレースホルダ(プリペアドステートメント)によるバインド機構の利用であり、これで値がSQL構文として解釈されなくなる。実装以外の対策としては、アプリケーションが使うDBアカウントの権限を最小限に絞り、万一侵入されたときの被害を限定する方法が有効である。したがってエの組みが適切。
出典・参考
公式シラバスの3 技術要素 > 1. 情報セキュリティ > (7) 攻撃手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。