本文へ移動

えすきゅーえるいんじぇくしょん

SQLインジェクション

Webサイトの入力フォーム等で、SQL命令を不正に混入させるサイバー攻撃です。悪意ある命令で情報を盗む被害が出ます。

詳しい説明

SQLインジェクションは、Webサイトの入力フォームやURLパラメータを通じて、悪意のあるSQL文(データベースを操作するための命令文)を不正に混入させるサイバー攻撃です。本来、データベースは適切に設計された命令のみを受け付けるはずですが、対策が不十分なプログラムだと、攻撃者が混入させた命令をそのまま実行してしまいます。

具体的には、攻撃者は「' OR 1=1 --」のような特殊な文字列をフォームに入力し、データベースの認証を回避したり、保存されている全顧客情報を不正に取得したり、最悪の場合はデータを改ざん・削除したりします。Webアプリケーションの脆弱性を突く攻撃として、IPAのセキュリティ情報でも長年トップレベルの脅威とされています。

対策としては、SQL文の組み立てにプレースホルダを使用し、入力値をデータとしてのみ扱うようにすることが最も効果的です。また、入力値に含まれる特殊文字を無効化するエスケープ処理も基本ですが、プレースホルダの方がより安全です。試験では、攻撃の仕組みそのものと、これらの根本的な対策手法がセットで問われます。

試験で問われること

ITパスポート試験

  • SQLインジェクションはWebサイトのデータベースを攻撃する手法である。
  • 認証の回避や情報の不正取得が目的である。
  • 対策としてプレースホルダの利用が有効であることを覚える。

基本情報技術者試験

  • SQL文の構造を理解し、不正な命令文がどう生成されるかを問う問題が出る。
  • プレースホルダの使用がなぜ有効か(データと命令の分離)が技術的に問われる。
  • OSコマンドインジェクションとの違いを区別する。