基本情報暗記無料で始める

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

SQLインジェクションとは、Webアプリケーションの入力欄にSQLの断片を紛れ込ませ、データベースに開発者が想定していない命令を実行させる攻撃。情報の不正な取得・改ざん・削除や、認証の回避につながる。原因は、利用者の入力値をそのまま連結してSQL文を組み立てる実装にあり、根本対策はプレースホルダ(SQL文の中に置く、値を後から埋め込む場所)を用いて値とSQL文を分離することである(この埋め込みの仕組みをバインド機構と呼ぶ)。

最終更新:2026-10-09

試験情報

基本情報技術者試験の過去問では6回出題され、ほかに2問の解説で触れられています(2016年度〜2025年度)。

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

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

背景

SQL文を文字列として組み立てる書き方は直感的で、入力値をそのまま埋め込めば動いてしまう。しかしデータベースから見れば、届いたのは1本のSQL文であって、どこまでが開発者の書いた命令でどこからが利用者の入力かの区別は付かない。値のつもりで渡したものが命令として解釈されるという構造的な穴がここにある。だから対策も「危ない文字を探して消す」方向ではなく、値と命令を最初から別の経路で渡す方向に定まった。

具体例

ログイン画面のID欄に「' OR '1'='1」と入力すると条件が常に真になり、パスワードを知らなくても認証を通過してしまう実装がありうる。対策としては、SQL文の側にプレースホルダを用意しておき、値をSQL文とは別に渡す仕組みを使う。IPAの「安全なウェブサイトの作り方」も同じ方針を示している。

試験での引っ掛け

「入力できる文字数を制限する」「JavaScriptで入力を検証する」は対策として不十分で、利用者の端末側(クライアント側)の検証は迂回できる。またデータベースの実行アカウントの権限を絞ることは被害を小さくする策であって根本対策ではない。根本対策はプレースホルダによる分離である、という一点を外さない。

関連用語

出た過去問

問題文で直接問われたものと、解説の中で触れられたものが含まれます。

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

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

試験での特徴
  • 試験では6回出題(2016年度〜2025年度)
  • 分野:テクノロジ系
  • 「入力できる文字数を制限する」「JavaScriptで入力を検証する」は対策として不十分で、利用者の端末側(クライアント側)の検証は迂回できる。