SQLインジェクションとは?
SQLインジェクションとは、入力値がSQL文の一部として解釈されることを悪用し、意図しない問合せを実行させる攻撃。認証回避、データの窃取・改ざん・破壊、DBMSの機能を介したOSコマンド実行に至ることがある。
情報処理安全確保支援士試験の過去問では5回出題されています(2016年度〜2023年度)。
えすきゅーえるいんじぇくしょん
SQLインジェクションの意味
入力値がSQL文の一部として解釈されることを悪用し、意図しない問合せを実行させる攻撃。認証回避、データの窃取・改ざん・破壊、DBMSの機能を介したOSコマンド実行に至ることがある。
SQLインジェクションの具体例
条件式を常に真にする文字列を入力すると、WHERE句が全行に適合してテーブル全体が返る。UNION SELECTで別テーブルの内容を結果に混ぜる手口もある。
SQLインジェクションは試験でどう引っ掛けられる?
根本対策は静的プレースホルダ(バインド機構)でSQL文の構造を固定すること。入力値のエスケープは実装を誤りやすく次善策、入力値の長さ制限やWAFは緩和策にとどまる。DBユーザの権限最小化は被害の限定策。
SQLインジェクションと関連する用語
SQLインジェクションが出た過去問
SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
正解:プレースホルダを利用する。 / データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:プレースホルダとDB権限最小化がSQLi対策の要
SQLインジェクションの根本対策は、プレースホルダ(バインド機構)を使ってSQL文の構造と値を分離することです。加えて実装以外の対策として、アプリが使うデータベースアカウントの権限を必要最小限に絞れば、万一侵入されても被害範囲を限定できます。この2つの組合せが適切です。
出典:平成28年度 秋期 情報処理安全確保支援士試験 am2 問17(IPA)SQLインジェクション対策について,Webアプリケーションの実装における対策と,Webアプリケーションの実装以外の対策として,ともに適切なものはどれか。
正解:実装における対策:プレースホルダを利用する。 / 実装以外の対策:データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:SQL注入はプレースホルダで防ぎDB権限最小化で被害を抑える
SQLインジェクションの実装面での根本対策は、プレースホルダを用いた静的なSQL組立て(バインド機構)である。値をSQL文の文字列に連結せず、パラメタとして渡すため、入力に構文要素が混じっても命令としては解釈されない。加えて実装以外の備えとして、アプリが使うDBアカウントの権限を必要最小限に絞れば、万一注入されても被害範囲を限定できる。
出典:平成30年度 春期 情報処理安全確保支援士試験 am2 問17(IPA)SQLインジェクション対策について、Webアプリケーションプログラムの実装における対策と、Webアプリケーションプログラムの実装以外の対策として、ともに適切なも…
正解:プレースホルダを利用する。
要点:SQLインジェクションはプレースホルダ+DB権限最小化で防ぐ
SQLインジェクションはアプリケーションがSQL文を文字列連結で組み立てることに起因するため、実装面の対策はプレースホルダ(バインド機構)を使い、値をSQL文の構造から切り離すことが最も確実である。実装以外の対策としては、アプリケーションが使うデータベースアカウントの権限を必要最小限に絞り、万一侵入されたときの被害範囲を限定する多層防御が有効である。
出典:令和1年度 秋期 情報処理安全確保支援士試験 am2 問17(IPA)安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
正解:SQLインジェクション ─ SQL文の組立てに静的プレースホルダを使用する。
要点:SQLインジェクション対策の本命は静的プレースホルダ
SQLインジェクションの根本対策は、SQL文の骨格をあらかじめ確定させ、値を後から安全に埋め込むプレースホルダの利用である。特に静的プレースホルダはデータベースエンジン側でSQL文を先に構文解析するため、値に何が入っても構文が変化せず、確実に攻撃を防げる。他の三つは、外部リソースの無制限な取り込み、状態変更へのGETの使用、セッションIDの固定化と、いずれも脆弱性を招く実装である。
出典:令和3年度 春期 情報処理安全確保支援士試験 am2 問12(IPA)SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組みとして,適切なも…
正解:プレースホルダを利用する。/Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
要点:SQLインジェクションはプレースホルダとDB権限の最小化で守る
SQLインジェクションの実装上の根本対策はプレースホルダ(プリペアドステートメント)によるバインド機構の利用であり、これで値がSQL構文として解釈されなくなる。実装以外の対策としては、アプリケーションが使うDBアカウントの権限を最小限に絞り、万一侵入されたときの被害を限定する方法が有効である。したがってエの組みが適切。
出典:令和5年度 春期 情報処理安全確保支援士試験 am2 問17(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。