SQLインジェクションとは?エスキューエルインジェクション
SQLインジェクションとは、入力値にSQLの構文要素を紛れ込ませ、アプリケーションが文字列連結で組み立てるSQL文の構造そのものを書き換える攻撃。認証の回避から本来見えない全件の取得、表の破壊まで、接続アカウントの権限が許す範囲のあらゆる操作が成立し得る。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
データとして受け取った文字列を、そのままプログラムであるSQL文の一部として連結してしまうことが根本原因で、データと命令の境界が消えるという古典的な脆弱性の一形態にあたる。境界が消える以上、危ない文字を数え上げて潰す方向では抜けが残り続ける。設計の段階で構文と値を別々に渡す経路を用意することが対策になる。
具体例
検索欄に常に真になる条件を入れると WHERE 名前='' OR '1'='1' と解釈され、全件が返る。PostgreSQLやOracleのプリペアドステートメントでは、SQLの構文を先に確定させてから値を別経路で渡すため、値に何を書いても構文としては解釈されない。
試験での引っ掛け
エスケープ処理は補助であって主対策ではない。文字コードの扱いや数値項目の連結など抜け道が残るため、プレースホルダによるバインド機構を用いる。入力値検査だけで防ぐ設計も同様に不十分で、対策を置くべき場所はSQLを組み立てる箇所である。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。