SQLインジェクションとは?えすきゅーえるいんじぇくしょん
SQLインジェクションとは、Webアプリケーションの入力欄にSQLの断片を紛れ込ませ、データベースに開発者が想定していない命令を実行させる攻撃。情報の不正な取得・改ざん・削除や、認証の回避につながる。原因は、利用者の入力値をそのまま連結してSQL文を組み立てる実装にあり、根本対策はプレースホルダ(SQL文の中に置く、値を後から埋め込む場所)を用いて値とSQL文を分離することである(この埋め込みの仕組みをバインド機構と呼ぶ)。
最終更新:2026-10-09
この語が出る過去問を解く →背景
SQL文を文字列として組み立てる書き方は直感的で、入力値をそのまま埋め込めば動いてしまう。しかしデータベースから見れば、届いたのは1本のSQL文であって、どこまでが開発者の書いた命令でどこからが利用者の入力かの区別は付かない。値のつもりで渡したものが命令として解釈されるという構造的な穴がここにある。だから対策も「危ない文字を探して消す」方向ではなく、値と命令を最初から別の経路で渡す方向に定まった。
具体例
ログイン画面のID欄に「' OR '1'='1」と入力すると条件が常に真になり、パスワードを知らなくても認証を通過してしまう実装がありうる。対策としては、SQL文の側にプレースホルダを用意しておき、値をSQL文とは別に渡す仕組みを使う。IPAの「安全なウェブサイトの作り方」も同じ方針を示している。
試験での引っ掛け
「入力できる文字数を制限する」「JavaScriptで入力を検証する」は対策として不十分で、利用者の端末側(クライアント側)の検証は迂回できる。またデータベースの実行アカウントの権限を絞ることは被害を小さくする策であって根本対策ではない。根本対策はプレースホルダによる分離である、という一点を外さない。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 秋期 基本情報技術者試験 午前 問42(IPA)解説で登場
WAFの説明はどれか。
正解:Webサイトに対するアクセス内容を監視し,攻撃とみなされるパターンを検知したときに当該アクセスを遮断する。
要点:WAFはHTTPの内容を検査してWeb攻撃を遮断する
WAF(Web Application Firewall)は、Webアプリケーションへの通信内容を検査し、SQLインジェクションやクロスサイトスクリプティングなど攻撃と判断されるパターンを含むアクセスを遮断する仕組みである。通常のファイアウォールがポート単位で制御するのに対し、HTTPの中身まで見る点が特徴である。
出典:平成28年度 春期 基本情報技術者試験 午前 問37(IPA)
SQLインジェクション攻撃の説明として,適切なものはどれか。
正解:Webアプリケーションのデータ操作言語の呼出し方に不備がある場合に,攻撃者が悪意をもって構成した文字列を入力することによって,データベースのデータの不正な取得,改ざん及び削除をする攻撃
要点:SQLインジェクションは入力値でSQL文を書き換える攻撃
SQLインジェクションは、入力値をそのままSQL文に連結してしまう実装の不備を突く攻撃である。攻撃者が引用符や論理式を含む文字列を送り込むと、開発者の意図しないSQL文が組み立てられ、データの不正取得・改ざん・削除が起きる。対策としてはプレースホルダを用いた文の組立てが基本になる。
出典:平成28年度 春期 基本情報技術者試験 午前 問43(IPA)
クライアントとWebサーバの間において,クライアントからWebサーバに送信されたデータを検査して,SQLインジェクションなどの攻撃を遮断するためのものはどれか。
正解:WAF
要点:WAFはHTTPの中身を検査してWeb攻撃を遮断する
WAF(Web Application Firewall)は、HTTPの通信内容そのものを検査し、攻撃に典型的なパターンを含むリクエストを遮断する。パケットヘッダしか見ない従来型ファイアウォールでは防げない、SQLインジェクションやクロスサイトスクリプティングへの対策として位置付けられる。アプリケーション改修が難しい場合の緩和策としても使われる。
出典:平成29年度 秋期 基本情報技術者試験 午前 問39(IPA)
SQLインジェクション攻撃の説明はどれか。
正解:Webアプリケーションに問題があるとき、悪意のある問合せや操作を行う命令文をWebサイトに入力して、データベースのデータを不正に取得したり改ざんしたりする攻撃
要点:SQLインジェクションは入力経由でDBに不正なSQLを実行させる
SQLインジェクションは、入力値の検証やエスケープが不十分なWebアプリケーションに対し、SQL文として解釈される文字列を送り込み、開発者が意図しない問合せや更新をデータベースに実行させる攻撃である。情報の不正取得、改ざん、削除につながる。プレースホルダ(バインド機構)の利用が根本的な対策となる。
出典:平成30年度 春期 基本情報技術者試験 午前 問41(IPA)
SQLインジェクション攻撃による被害を防ぐ方法はどれか。
正解:入力された文字が、データベースへの問合せや操作において、特別な意味をもつ文字として解釈されないようにする。
要点:SQLインジェクション対策は入力を値としてのみ扱うこと
SQLインジェクションは、入力値に含まれた引用符などの記号がSQL文の一部として解釈されることで、意図しない問合せが実行される攻撃である。対策は、プレースホルダの利用やエスケープ処理によって、入力文字をあくまで値として扱い特別な意味をもたせないことである。
出典・参考
公式シラバスの3 技術要素 > 1. 情報セキュリティ > (7) 攻撃手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。