プレースホルダ(バインド機構)とは?
プレースホルダ(バインド機構)とは、SQL文の骨格をあらかじめ確定させ、値の部分だけを後から変数として渡す仕組み。値が構文解析より後に結び付けられるため、どんな文字列を渡しても命令として解釈されず、SQL注入を原理的に封じる。文字列連結でSQLを組み立てないことが最も確実な対策とされる。
基本情報技術者試験の過去問では5回出題されています(2016年度〜2024年度)。
ぷれーすほるだ
プレースホルダ(バインド機構)の意味
SQL文の骨格をあらかじめ確定させ、値の部分だけを後から変数として渡す仕組み。値が構文解析より後に結び付けられるため、どんな文字列を渡しても命令として解釈されず、SQL注入を原理的に封じる。文字列連結でSQLを組み立てないことが最も確実な対策とされる。
プレースホルダ(バインド機構)の具体例
検索条件を連結して組み立てていた処理を、条件の数だけプレースホルダを用意する形に書き換える。データベース側で構文解析結果を再利用できるため、繰り返し実行される問い合わせでは性能面の利点も得られる。
プレースホルダ(バインド機構)は試験でどう引っ掛けられる?
テーブル名や列名、ORDER BYの並び順はプレースホルダで渡せないため、その部分は許可リストで検証する必要がある。またエスケープ処理による対策は文字コードの扱い次第で抜け道が生じるため、次善の策と位置づけられる。
プレースホルダ(バインド機構)と関連する用語
プレースホルダ(バインド機構)が出た過去問
SQLインジェクション攻撃の説明として,適切なものはどれか。
正解:Webアプリケーションのデータ操作言語の呼出し方に不備がある場合に,攻撃者が悪意をもって構成した文字列を入力することによって,データベースのデータの不正な取得,改ざん及び削除をする攻撃
要点:SQLインジェクションは入力値でSQL文を書き換える攻撃
SQLインジェクションは、入力値をそのままSQL文に連結してしまう実装の不備を突く攻撃である。攻撃者が引用符や論理式を含む文字列を送り込むと、開発者の意図しないSQL文が組み立てられ、データの不正取得・改ざん・削除が起きる。対策としてはプレースホルダを用いた文の組立てが基本になる。
出典:平成28年度 春期 基本情報技術者試験 午前 問37(IPA)SQLインジェクション攻撃の説明はどれか。
正解:Webアプリケーションに問題があるとき、悪意のある問合せや操作を行う命令文をWebサイトに入力して、データベースのデータを不正に取得したり改ざんしたりする攻撃
要点:SQLインジェクションは入力経由でDBに不正なSQLを実行させる
SQLインジェクションは、入力値の検証やエスケープが不十分なWebアプリケーションに対し、SQL文として解釈される文字列を送り込み、開発者が意図しない問合せや更新をデータベースに実行させる攻撃である。情報の不正取得、改ざん、削除につながる。プレースホルダ(バインド機構)の利用が根本的な対策となる。
出典:平成29年度 秋期 基本情報技術者試験 午前 問39(IPA)SQLインジェクション攻撃による被害を防ぐ方法はどれか。
正解:入力された文字が、データベースへの問合せや操作において、特別な意味をもつ文字として解釈されないようにする。
要点:SQLインジェクション対策は入力を値としてのみ扱うこと
SQLインジェクションは、入力値に含まれた引用符などの記号がSQL文の一部として解釈されることで、意図しない問合せが実行される攻撃である。対策は、プレースホルダの利用やエスケープ処理によって、入力文字をあくまで値として扱い特別な意味をもたせないことである。
出典:平成30年度 春期 基本情報技術者試験 午前 問41(IPA)SQLインジェクション攻撃による被害を防ぐ方法はどれか。
正解:入力された文字が、データベースへの問合せや操作において、特別な意味をもつ文字として解釈されないようにする。
要点:SQL文の制御記号として解釈させないのが根本対策
SQLインジェクションは、入力値に含まれる引用符などの記号がSQL文の一部として解釈されてしまうことで起こる。対策は、入力された文字をSQLにとって特別な意味をもつ記号として扱わせないことであり、プレースホルダを使った問合せや適切なエスケープ処理がこれに当たる。HTMLタグの無害化はクロスサイトスクリプティング、上位ディレクトリ指定の拒否はディレクトリトラバーサルへの対策である。
出典:令和4年度 s 基本情報技術者試験 kamokuA 問36(IPA)SQLインジェクションの対策として、有効なものはどれか。
正解:プレースホルダを使って命令文を組み立てる。
要点:SQLインジェクション対策の基本はプレースホルダ利用
SQLインジェクションは、入力値がSQL文の一部として解釈されることで生じる。プレースホルダ(バインド機構)を使えば、値はあくまでパラメタとして渡され、SQL文の構造を変えられないため攻撃が成立しない。他の選択肢はオープンリダイレクトやディレクトリトラバーサルなど、別の脆弱性への対策である。
出典:令和6年度 (公開問題) 基本情報技術者試験 kamokuA 問10(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。