SQLインジェクション

更新日:

用語解説

SQLインジェクションは、Webアプリケーション等が外部入力をSQL文へ不安全に連結した結果、入力がデータではなくSQLの構造として解釈され、意図しない問合せや更新を実行される脆弱性・攻撃です。

■ 試験で押さえるポイント

  • 認証回避、機密データの読取り、改ざん・削除、DBMS機能を通じた追加攻撃につながります。エラー表示がなくても時間差等で悪用される場合があります。

  • 値はプリペアドステートメントやパラメータ化問合せへ束縛し、SQL文字列を連結しません。表名や並び順など束縛できない要素は許可リストで選びます。

  • 入力検証、詳細エラーの非表示、DBアカウントの最小権限、読取り・更新権限の分離を重層化します。単純な文字置換やエスケープだけに依存しません。

  • XSSは主にブラウザ上のスクリプト実行、OSコマンドインジェクションはシェル命令の改変であり、SQLインジェクションはDBへのSQL構造を改変します。

■ 選択肢での判断ポイント

外部入力をSQLへ文字列連結する実装が原因で、DBの問合せ構造が変わる点を見分けます。第一の対策はパラメータ化です。

例: ログイン名をSQL文字列へ埋め込まず「利用者名=プレースホルダ」として値を別に束縛すれば、記号を含む入力もSQL命令ではなくデータとして扱われます。

音声で聞く

同じ分野の用語