【線路主任技術者】過去問準拠 予想演習 問054 解説|思考ルート
Webアプリケーションのセキュリティ対策において、データベース連携を行うシステムでSQLインジェクションを防ぐための実装手順として、最も適切なものはどれか。
※本問は、過去の出題傾向・頻出論点をAI分析して作成した「過去問準拠の予想演習問題」です。
予想演習 No.054
Webアプリケーションのセキュリティ対策において、データベース連携を行うシステムでSQLインジェクションを防ぐための実装手順として、最も適切なものはどれか。
選択肢
ユーザーからの入力値をそのままSQL文の文字列に結合してデータベースサーバーへ送信し、実行直前にシステム側で自動的に構文解析と無害化を行う。
データベースへの問い合わせに際し、SQL文の構造と入力データを明確に分離するため、変数プレースホルダを用いたプリペアドステートメントを実装する。
入力値に含まれるすべてのシングルクォートやセミコロンなどの特殊記号を、画面表示用のHTML特殊文字参照に置き換えるエスケープ処理を事前に施す。
Webアプリケーションの入力フォームにおいて、ブラウザ上のJavaScriptによるクライアントサイドのバリデーションのみを実施し、サーバー側での検証を省略する。
正解と解説(思考ルート)
【正解】 選択肢 2
■【設問の意図と背景】
SQLインジェクション攻撃のメカニズムを踏まえ、データベースへの安全なクエリ発行を実現する正しいプロセス・実装手順を問う。
■【正解の根拠とメカニズム】
SQLインジェクションを防ぐためには、SQL文の構造(命令)と入力データ(値)を混同させないことが不可欠である。変数プレースホルダを利用したプリペアドステートメント(準備された文)を用いることで、入力値がコードとして解釈されることを防ぎ、安全にデータベース操作を行うことができる。したがって選択肢2が最も適切である。
■【各選択肢の徹底検証】
・選択肢1:入力値を直接文字列結合すると攻撃を受けるため誤り。
・選択肢2:プレースホルダを用いるプリペアドステートメントの利用であり正しい(これが正解)。
・選択肢3:HTML用のエスケープ処理はSQLインジェクションの根本的対策としては不十分であり誤り。
・選択肢4:クライアントサイドの検証のみでは容易にバイパスされるため誤り。
■【本番での即断ポイント】
「SQLインジェクション対策=プレースホルダ(プリペアドステートメント)」の組み合わせを即座に思い出すこと。
スマホで全100問をランダム演習・弱点管理しませんか?
「思考ルート」のWeb演習アプリなら、線路主任技術者をはじめとする難関資格の過去問準拠・予想演習を、スマホやPCで100問まで完全無料でお試し演習できます。