セキュリティ
プレースホルダ(バインド変数)がSQLインジェクションを防ぐ理由として正しいものはどれか。
ア.入力値をすべてURLエンコードするため、特殊文字が無害化される
イ.データベースへの接続自体を暗号化するため、盗聴されても安全
ウ.バインド変数はSQLの構造とデータを分離するため、入力値がSQL命令として解釈されない正解
エ.入力値の長さを制限するため、長いSQL文が注入されてもエラーになる
解説
プレースホルダは「レストランの注文票」のようなもの。料理名(データ)の欄に「厨房に入る」(SQL命令)と書いても、それはただの文字列として扱われる。
なぜ ウ が正解か
プレースホルダを使うと、SQL文の構造(命令部分)とパラメータ(データ部分)が完全に分離される。ユーザーが入力した値はデータとしてのみ処理され、どんな文字を含んでいてもSQL命令として解釈されない。そのためSQLインジェクションが根本的に防がれる。
出典: AI生成問題(学習用)