令和元年秋期試験問題 午前Ⅱ 問17

SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組合せとして,ともに適切なものはどれか。

17.png
正解 問題へ
分野 :テクノロジ系
中分類:セキュリティ
小分類:セキュリティ実装技術
解説
プレースホルダは、SQL文の中でユーザーの入力値を使用する部分に置かれる記号のことです。その記号の部分には、実行時にSQL文の特殊文字がエスケープされた値が割り当てられるので、不正なSQL文が実行されるのを防ぐことができます。このようにSQL文のひな型を用意しておき、実行時に値を割り当てることで、SQLインジェクションを防止する仕組みをバインド機構と言います。
//PHPにおけるプレースホルダの一例
$uid = $_POST["userid"];
$sql = 'SELECT * FROM USER WHERE uid = ?' //?がプレースホルダ
$pdo = new PDO($dbh, $user, $password);
$stmt = $pdo->prepare($sql);
$stmt->execute([$uid]); //?に値を割り当てて実行
また、データベースを扱うWebアプリケーションに必要以上の権限が与えられていると、不正なSQL文が実行されるリスクが増すので、最小権限をもつアカウントで処理させることも重要な対策となります。
  • OSコマンドインジェクション対策です。
  • セッションハイジャック対策です。
  • ディレクトリトラバーサル対策です。
  • 正しい。SQLインジェクション対策です。

この問題の出題歴


Pagetop