情報セキュリティの基礎

ログインの画面で、パスワードの欄に ' OR '1'='1 のような文字列を入力されると、パスワードを知らなくてもログインできてしまうWebアプリケーションがある。この攻撃の名前はどれか。

  1. ASQLインジェクション
  2. Bクロスサイトスクリプティング
  3. Cディレクトリトラバーサル
答えと解説を見る

正解:A. SQLインジェクション

SQLインジェクションは、Webアプリケーションが、利用者の入力をそのまま文字列としてつなげてデータベースへの命令(SQL文)を組み立てていることを悪用する攻撃です。例えば「パスワードが '入力値' と等しい」という条件を作るところに ' OR '1'='1 が入ると、引用符で文字列が閉じられ、「または '1' と '1' が等しい」という常に成り立つ条件が付け加わってしまいます。その結果、パスワードを知らなくても条件が成り立ち、ログインできてしまいます。同じ方法で、データの盗み出しや書き換え、削除が行われるおそれもあります。根本的な対策は、入力を命令の一部として解釈させない仕組み(プレースホルダを使うプリペアドステートメント)を使うことです。

  • A. 正しい。入力でSQL文の意味を変えてしまう攻撃がSQLインジェクションです。
  • B. クロスサイトスクリプティングは、Webページに不正なスクリプトを埋め込み、閲覧者のブラウザで動かす攻撃です。
  • C. ディレクトリトラバーサルは、ファイル名の指定に ../ などを入れて、公開していないファイルを読み出す攻撃です。
この分野を解く 分野ページへ

関連する計算ツール

情報セキュリティの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

情報セキュリティの基礎のほかの問題

  1. SQLインジェクションへの対策として、プレースホルダを使うプリペアドステートメント(パラメータ化クエリ)が、入力の中の危険な文字を取り除く方法より根本的な対策とされる理由として正しいものはどれか。
  2. 掲示板のWebアプリケーションで、利用者が投稿した文章の中のスクリプトが、ほかの閲覧者のブラウザで実行されてしまう脆弱性があった。この脆弱性の名前と、根本的な対策の組み合わせとして正しいものはどれか。
  3. Webアプリケーションで、ログインしたままの利用者が攻撃者の用意した罠のページを開くと、利用者のブラウザから正規のサイトへ、利用者の意図しない送金や設定の変更のリクエストが送られてしまう脆弱性がある。この脆弱性への対策として適切なものはどれか。
  4. Webアプリケーションが、URLのパラメータで指定されたファイル名を、公開用のフォルダの名前とつなげて読み出して表示している。ファイル名に ../ を含む値を指定されると、公開用のフォルダの外にある設定ファイルなどを読み出されてしまう。この攻撃の名前と対策の組み合わせとして正しいものはどれか。
  5. Webアプリケーションで、ログインの前と後で同じセッションIDを使い続けていると、攻撃者があらかじめ用意したセッションIDを利用者に使わせ、利用者がログインした後にそのIDで利用者になりすますおそれがある。この攻撃への対策として最も適切なものはどれか。