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

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

17.gif
正解 問題へ
分野:テクノロジ系
中分類:セキュリティ
小分類:セキュリティ実装技術
プレースホルダとは、ユーザ入力をもとに生成される部分に特殊文字("?"など)を使用したSQL文中のひな形を用意し、その変数部分には実行時に値を割り当てる仕組みです。後から割り当てる値は、SQL文の特殊文字がエスケープされた完全な数値または文字列として扱われるためセキュアに実行することができます。

また、データベースを扱うWebアプリケーションに必要以上の権限が与えられていると、不正なSQL文が実行されるリスクが増すので、最小権限をもつアカウントで処理させることも重要な対策となります。
//PHPにおけるプレースホルダの一例
$uid = $_POST["userid"];
$sql = 'SELECT * FROM USER WHERE uid = ?' //?がプレースホルダ
$pdo = new PDO($dbh, $user, $password);
$stmt = $pdo->prepare($sql);
$stmt->execute([$uid]); //?に値を割り当てて実行
  • OSコマンドインジェクション対策です。
  • セッションハイジャック対策です。
  • ディレクトリトラバーサル対策です。
  • 正しい。SQLインジェクション対策です。

この問題の出題歴


Pagetop