プレースホルダ(プリペアドステートメント)とは?
プレースホルダ(プリペアドステートメント)とは、SQL文の構文を先にデータベースへ渡して解析させ、値は後から別枠で与える仕組み。値がSQLの構文として解釈される機会がそもそも無くなるため、文字列連結や個別のエスケープに頼るより確実にSQLインジェクションを防げる。静的プレースホルダと動的プレースホルダの区別がある。
情報処理安全確保支援士試験の過去問では5回出題されています(2016年度〜2023年度)。
ぷれーすほるだ
プレースホルダ(プリペアドステートメント)の意味
SQL文の構文を先にデータベースへ渡して解析させ、値は後から別枠で与える仕組み。値がSQLの構文として解釈される機会がそもそも無くなるため、文字列連結や個別のエスケープに頼るより確実にSQLインジェクションを防げる。静的プレースホルダと動的プレースホルダの区別がある。
プレースホルダ(プリペアドステートメント)の具体例
検索条件の会員IDをWHERE id = ?として束縛し、実行時に値だけを渡す。DBサーバ側で構文木が確定してから値が入るため、値に引用符やOR 1=1が含まれてもただの文字列として扱われ、条件式が書き換わらない。
プレースホルダ(プリペアドステートメント)は試験でどう引っ掛けられる?
テーブル名・列名・ORDER BYの並び順・LIKEのワイルドカードは値ではないため束縛できず、ここは許可リストで固定するしかない。またドライバがクライアント側で文字列を組み立てる動的プレースホルダは、文字コードの扱い次第で回避の余地が残る。
プレースホルダ(プリペアドステートメント)と関連する用語
プレースホルダ(プリペアドステートメント)が出た過去問
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/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。