問題
SQLインジェクション攻撃への対策として、最も有効なものはどれか。
選択肢
- 1クライアント側でJavaScriptによる入力検証のみ実施する
- 2プレースホルダ(バインド機構)を用いたパラメータ化クエリを使用する
- 3すべての通信をHTTPS化する
- 4パスワードを長くする
正解
2. プレースホルダ(バインド機構)を用いたパラメータ化クエリを使用する
詳しい解説を見る解説を閉じる
解説
SQLインジェクションは、入力欄に攻撃用の文字列を紛れ込ませ、アプリケーションが組み立てるSQL文の構造を改変してデータの不正取得・改ざんを行う攻撃である。最も有効な対策はプレースホルダ(バインド機構)を用いたパラメータ化クエリで、SQL文の雛形を先に確定させてから入力値を純粋なデータとして割り当てるため、入力がSQLの構文として解釈される余地を構造的になくせる。クライアント側のJavaScriptによる入力検証は、ブラウザを介さず直接リクエストを送る攻撃者に容易に迂回されるため単独では対策にならない。HTTPS化は通信経路の盗聴・改ざん対策であり、サーバ内で実行されるSQL文の改変は防げない。パスワードの長さも無関係である。「文を組み立ててから値を入れる」のがプレースホルダの本質と覚える。
一問一答
全400問を繰り返し学習