情報処理安全確保支援士令和元年秋期 午前U 問17

問17

SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組合せとして,ともに適切なものはどれか。
  • 17.gif/image-size:510×255

  • [出題歴]
  • 情報セキュリティ H21秋期 問14
  • 情報セキュリティ H24春期 問16
  • 情報セキュリティ H25秋期 問15
  • 情報セキュリティ H27春期 問17
  • 情報セキュリティ H28秋期 問17
  • 安全確保支援士 H30春期 問17

分類

テクノロジ系 » セキュリティ » セキュリティ実装技術

正解

解説

プレースホルダとは、ユーザ入力をもとに生成される部分に特殊文字("?"など)を使用した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インジェクション対策です。
© 2014-2023 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop