情報処理安全確保支援士暗記無料で始める

SQLインジェクションとは?えすきゅーえるいんじぇくしょん

SQLインジェクションとは、利用者の入力値がSQL文の構造の一部として解釈されることを悪用し、開発者が意図しない問合せを実行させる攻撃。認証の回避、データの窃取・改ざん・削除に加え、DBMSの拡張機能を介したOSコマンド実行にまで至ることがある。

最終更新:2026-10-06

試験情報

情報処理安全確保支援士試験の過去問では5回出題されています(2016年度〜2023年度)。

情報処理安全確保支援士試験の頻出用語/午前II

この語が出る過去問を解く →

背景

SQL文を文字列連結で組み立てる実装では、値と命令の区別が文字列の中にしか存在しない。引用符を閉じる入力を1つ受け取った時点で、以降は攻撃者が書いた命令として読まれる。処理系に「ここは値である」と先に宣言してから値を渡すプレースホルダが用意されたのは、この境界を実装者の注意力ではなく仕組みで守るためである。

具体例

ログイン画面のパスワード欄に条件式を常に真にする文字列を入れると、WHERE句が全行に一致してしまう。JavaのPreparedStatementやRailsのプレースホルダのように、SQLの構造を先に確定してから値を渡すAPIを使えば、値に何を書かれても構造は変わらない。

試験での引っ掛け

根本対策は静的プレースホルダ(バインド機構)でSQL文の構造を固定すること。エスケープ処理は実装を誤りやすい次善策、入力長の制限やWAFは緩和策、DBユーザの権限最小化は被害の限定策で、いずれも根本対策と区別して答える。データの暗号化はこの攻撃を防がない。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では5回出題(2016年度〜2023年度)
  • 分野:午前II
  • 根本対策は静的プレースホルダ(バインド機構)でSQL文の構造を固定すること。