マルテクテクBETA Security+
SQLi
SQL Injection

SQLi(SQLインジェクション)とは

ひとことで

入力値にSQL文の一部を混入させ、データベースへの問い合わせを改変する攻撃。パラメータ化クエリで対策する。

たとえると

注文票の備考欄に「あと、金庫の中身も全部持ってきて」と書いたら、店員がそのまま実行してしまうようなものです。入力欄の文字を「ただの文字」ではなく「命令の一部」として扱ってしまうことが原因です。

現場ではこう使う

ログイン画面のIDに「admin' --」と入力すると、パスワードを確認する部分がコメントとして無視され、パスワードなしで管理者としてログインできてしまいます。検索欄から「UNION SELECT」を送り込まれ、会員情報をまるごと取り出されるケースもあります。

試験のポイント

EXAM POINT問題文やログに「' OR 1=1」「UNION SELECT」「--」が出てきたらSQLi(URLエンコードされて %27 になっていることも)。対策は「パラメータ化クエリ(プリペアドステートメント)」が最優先で、入力値の検証やWAFは補助的な対策です。

混同しやすい用語との違い

  • XSS狙いはデータベースではなく、ページを見た人のブラウザ
  • コマンドインジェクションSQLではなく、サーバーのOSのコマンドを実行させる

関連用語

SQLi が出てくる Security+ の問題に挑戦してみましょう。

無料で演習を始める