オリジナル予想問題7 問42

Webアプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せはどれか。

  • OSコマンドインジェクションを防ぐために, Webアプリケーションが発行するセッションIDを推測困難なものにする。
  • SQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
  • クロスサイトスクリプティングを防ぐために,外部から渡す入力データをWebサーバ内のファイル名として直接指定しない。
  • セッションハイジャックを防ぐために,Webアプリケーションからシェルを起動できないようにする。
正解 問題へ
分野:テクノロジ系
中分類:セキュリティ
小分類:セキュリティ実装技術
解説
問題文に登場するそれぞれの攻撃手法は次のようなものです。
OSコマンドインジェクション
ユーザーの入力をもとにOSのコマンドを発行して処理を行うWebアプリケーションに対して、不正なコマンドを渡すことで任意のファイルに対する読出し,変更,削除やパスワードの取得などを行う攻撃方法。OSコマンドの呼出しに使われる関数は、C,Perl,PHPの"exec","system"、入力値としてコマンドを許しているPerlの"open"関数などがある
SQLインジェクション
入力データとしてデータベースへの命令文を構成するデータを入力し、Webアプリケーションが想定していないSQL文を意図的に実行させることでデータベースを攻撃する方法
クロスサイトスクリプティング
動的にWebページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、サイト間を横断して悪意のあるスクリプトを混入させることでユーザーのクッキーを盗むなどの攻撃を行う方法
セッションハイジャック
認証が完了してセッションを開始しているブラウザとWebサーバの間の通信において、CookieやセッションIDなどのセッション情報を盗むことで、対象セッションを通信当事者以外が乗っ取る攻撃方法
  • セッションハイジャックを防ぐための対策です。
  • 正しい。バインド機構は、変数部分にプレースホルダと呼ばれる特殊文字を使用したSQLの雛型を用意し、ユーザーからの入力値を変数に割り当てて最終的なSQL文とする仕組みです。ユーザーからの入力値は文字列または数値として扱われるため、SQLインジェクションを狙った文字が含まれていたとしてもエスケープ処理され単なる文字列として認識されるため安全性が高まります。
  • ディレクトリトラバーサル攻撃を防ぐための対策です。
  • OSコマンドインジェクションを防ぐための対策です。

出典


Pagetop