HOME»情報処理安全確保支援士令和5年春期»午前Ⅱ 問17
情報処理安全確保支援士令和5年春期 午前Ⅱ 問17
問17
SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組みとして,適切なものはどれか。
- [出題歴]
- 安全確保支援士 R1秋期 問17
- 情報セキュリティ H21秋期 問14
- 情報セキュリティ H24春期 問16
- 情報セキュリティ H25秋期 問15
- 情報セキュリティ H27春期 問17
- 情報セキュリティ H28秋期 問17
- 安全確保支援士 H30春期 問17
分類
テクノロジ系 » セキュリティ » セキュリティ実装技術
正解
エ
解説
プレースホルダは、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文が実行されるリスクが増すので、最小権限をもつアカウントで処理させることも重要な対策となります。$uid = $_POST["userid"];
$sql = 'SELECT * FROM USER WHERE uid = ?' //?がプレースホルダ
$pdo = new PDO($dbh, $user, $password);
$stmt = $pdo->prepare($sql);
$stmt->execute([$uid]); //?に値を割り当てて実行
- OSコマンドインジェクション対策です。
- セッションハイジャック対策です。
- ディレクトリトラバーサル対策です。
- 正しい。SQLインジェクション対策です。