応用情報暗記無料で始める

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

SQLインジェクションとは、利用者の入力がSQL文の構造の一部として解釈されてしまうことを悪用し、意図しない検索・改ざん・認証の回避を起こす攻撃。防止の要は入力を検査することではなく、プレースホルダとバインド機構によって命令と値を別々に組み立て、入力が構文として読まれる余地をなくすことにある。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では4問の解説で触れられています(2016年度〜2024年度)。

応用情報技術者試験の頻出用語/テクノロジ系

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

背景

SQLは文字列として組み立てられ、データベースへ渡された時点で構文解析される。入力値を文字列連結で埋め込む実装では、値のつもりで渡した引用符や演算子がそのまま構文の一部として解釈され、開発者が意図しない文が完成してしまう。データと命令が同じ経路を通ることが原因で、OSコマンドインジェクションなどとも構造は共通である。応用情報では、なぜ入力チェックが根本対策にならないかまで説明を求められる。

具体例

ログイン画面のIDへ ' OR '1'='1 を入力すると条件が常に真になり、パスワードが合っていなくても認証を通ってしまう。プレースホルダを使い、SQL文の側を先に構文解析させてから ? の位置へ値を束縛すると、入力に引用符が含まれていても文字列リテラルの中身として扱われ、構文へは影響しない。

試験での引っ掛け

「入力値の長さを制限し、記号をブラックリストで除けば防げる」は誤りで、文字コードの解釈差や想定外の記法で回り込まれる。エスケープ処理も、対象を1つ漏らせば破られる点でバインド機構に劣る。WAFは攻撃の兆候を前段で弾く多層防御の一枚であり、根本対策はアプリケーション側で命令と値を分離することにある——ここを取り違えた選択肢が定番である。

関連用語

出た過去問

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

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

試験での特徴
  • 4問の解説で触れられる(2016年度〜2024年度)
  • 分野:テクノロジ系
  • 「入力値の長さを制限し、記号をブラックリストで除けば防げる」は誤りで、文字コードの解釈差や想定外の記法で回り込まれる。