SQLインジェクション【情報処理安全確保支援士講座】

今回は、情報処理安全確保支援士の試験で問われるSQLインジェクションについて解説します。


SQLインジェクション

SQLインジェクションは、ユーザの入力データを基にSQL文を編集し、データベースへ反映させるWebサイトにおいて不正なSQL文を入力する攻撃です。
SQLインジェクション対策が実施されていないサイトでは、データベースの不正な操作により中身が書き換えられたり、重要な情報が取得されたりする危険があります。
SQLインジェクションの実行方法

ユーザ名のパスワードを入力する欄において、入力内容からSQLを発行するWebサイトでの動作例を確認しましょう。
正常な入力データの場合


不正な入力データによるSQLインジェクションの場合

今回の攻撃事例では、「name = ‘USER’ AND PW = “」と、常に真である「’1′ = ‘1’」のorを取るため、結果的にusersのすべてのレコードが選択されます。

また、SQLインジェクションの脆弱性はWebサイト側だけの問題ではありません。下記にも注意が必要です。
- データベースへのアクセス権が必要以上に与えられている
- SQLのエラーメッセージが詳細にクライアントに返る設定になっている
SQLインジェクションの対策
SQLインジェクションの対策方法としては、下記のようなものがあります。
バインド機構
バインド機構は、変数部分にプレースホルダと呼ばれる特殊文字を使用してSQLのひな形をあらかじめ用意し、後から特殊文字に値を代入しSQL文を完成させる方法です。
割り当てられる変数は、数値もしくは文字列の定数として扱われるため、変数の中にSQL文として意味を持つ文字が含まれていても自動的にエスケープ処理され、単なる文字列として扱われます。
エスケープ処理
Webサイト上で入力データのうち、「’」「;」「%」「+」など、SQL文において意味を持つメタキャラクタをエスケープ処理する方法も、SQLインジェクションの対策につながります。
Webアプリケーション以外での対策
上記の対策はWebアプリケーションで実施できるものです。それ以外の対策方法も確認しておきましょう。
- クライアントへの詳細なエラーメッセージを送らないようにする
- WAF(Web Application Firewall)でSQLインジェクションを遮断する
- データベースのアクセス権限を最小限に絞る
SQLインジェクション・例題
実際に例題を解いて問題に慣れていきましょう。
問1
アカウント
| ID | ユーザ名 | メールアドレス |
| A001 | TARO JOHO | t-joho@email.org.jp |
| A002 | JIRO JOHO | j-joho@email.org.jp |
| A003 | HANAKO JOHO | h-joho@email.org.jp |
〔SQL文〕
SELECT ID,ユーザー名,メールアドレス FROM アカウント
WHERE ユーザー名 = ‘入力パラメータ’
ア:’ OR ‘–‘ = ‘–
イ:’ OR ユーザー名 = ‘ユーザー名
ウ:’– OR 1 = 1
エ:\’ OR 1 = 1 ‘;–
(ログイン後回答すると、ここに前回の正誤情報が表示されます)
問2
| WEBアプリケーションプログラムの実装における対策 | WEBアプリケーションプログラムの実装以外の対策 | |
| ア | Webアプリケーションプログラム内でシェルを起動しない。 | chroot環境でWebサーバを稼働させる。 |
| イ | セッションIDを乱数で生成する。 | TLSによって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメータとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
ア
イ
ウ
エ
(ログイン後回答すると、ここに前回の正誤情報が表示されます)
SQLインジェクション・まとめ
SQLインジェクションは過去にも何度か問われた攻撃手法です。攻撃を受けるとどうなるのかとあわせて、対策も確認しておきましょう。
次回はOSコマンドインジェクションについて学習します。
支援士の知識を、実際の問題で確かめよう
理解を得点力につなげる
情報処理安全確保支援士試験の過去問題・シラバス準拠問題を無料で掲載しています。 解説と図解を活用しながら、科目A-2の知識を科目Bで使える理解へつなげましょう。
- 科目Bにつながる体系的な知識 正解を覚えるだけでなく、類題で使える判断軸まで学べます。
- 復習に使える図解シート メモや試験直前の見直しにも使える解説画像を無料でダウンロードできます。
- シラバス準拠問題で未知問題対策 過去問だけでは補いにくい未出・薄出論点にも挑戦できます。
アカウント登録なしでも、すべての問題を無料で利用できます
無料登録すると、解答履歴・正答率・復習状況が保存され、続きから学習できます











Discussion
New Comments
No comments yet. Be the first one!