平成21年度 秋期 午前Ⅱ 問4
セキュリティ
SQLインジェクションの問題
SQLインジェクション対策として実施するものはどれか。
- ア入力データを送るときには,GETメソッドではなくPOSTメソッドを使う。
- イ入力データを送る前に,利用者認証を行う。
- ウ入力文字列をエスケープ処理して特殊文字を無効にする。
- エプロトコルにHTTPSを使用してデータを暗号化する。
答えと解説を見る
✓ これが正解ウ入力文字列をエスケープ処理して特殊文字を無効にする。
解説
入力文字列の特殊文字をエスケープ処理して無効にします。
SQLインジェクションは、入力欄に SQL の一部として働く文字を紛れ込ませ、アプリケーションが組み立てる SQL 文の意味を書き換えてしまう攻撃です。対策の軸は、入力された文字がSQL文の構造として解釈されないようにすることです。引用符のように SQL で特別な意味をもつ文字をエスケープ処理すれば、それらはただの文字として扱われ、攻撃者が文の構造を変えることはできなくなります。送信方法を変えること、認証すること、通信を暗号化することは、どれも入力値そのものの解釈には手を付けません。攻撃がどこで成立するかを考え、SQL文を組み立てる箇所で手を打つものを選ぶと見分けられます。
ほかの選択肢はなぜ違うのか
- ア入力データを送るときには,GETメソッド…:POSTメソッドに変えても、入力データがサーバに届き SQL 文の組立てに使われる点は同じです。URLに値が表示されなくなるだけで、攻撃者は送信内容を自由に作れるので、特殊文字を含む入力はそのまま処理されます。
- イ入力データを送る前に,利用者認証を行う。:利用者認証は、誰が使っているかを確かめる仕組みです。認証を通った利用者が悪意のある文字列を入力すれば、SQL文は同じように書き換えられてしまうため、入力値の扱いを改める対策にはなりません。
- エプロトコルにHTTPSを使用してデータを…:HTTPSは通信路を暗号化して盗聴や改ざんを防ぐものです。サーバに届いた時点で入力は元の文字列に戻り、そのまま SQL 文に組み込まれるので、SQLインジェクションを防ぐ効果はありません。
この問題の用語
- SQLインジェクション入力欄にデータベースへの命令を混ぜ込み、想定していない操作をさせる攻撃。入力をそのまま命令に組み込まないことが対策です。
- HTTPSHTTPのやり取りをTLSで包んだもの。通信を暗号化し、つないだ先が名乗ったとおりのサーバかを証明書で確かめられます。
- 利用者認証使おうとしている相手が本人かどうかを確かめる仕組み。知っていること、持っているもの、身体の特徴などを手がかりにします。
- プロトコル通信するときの、決まりごとや手順のまとまりのことをいいます。送る側と受ける側が同じものに従うことで、やり取りが成り立ちます。
- 暗号化内容を鍵がなければ読めない形に変換すること。通信の経路だけでは守りきれない場合があるので、ファイル自体にも施します。
出典:平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問4
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問25:データリンク層に関する問題(プロトコル)
- 令和7年度 春期 午前Ⅱ 問18(暗号化)
- 令和6年度 春期 午前Ⅱ 問19:CRLに関する問題(プロトコル)
- 令和元年度 秋期 午前Ⅱ 問25:セキュアOSに関する問題(利用者認証)
- 平成30年度 秋期 午前Ⅱ 問25(SQLインジェクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)