基本情報技術者過去問題 平成27年春期 午後問11

問11 

次のJavaプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕
 D社では,利用者が入力した文字列をHTMLに埋め込むことによって,動的にWeb ページを生成するアプリケーションを開発している。
 このようなアプリケーションでは,利用者が入力した文字列をHTMLに埋め込む際の処理が不適切な場合,情報漏えいの発生などシステムの安全な運用を脅かすおそれがある。
 利用者が入力した文字列をHTMLに埋め込む前には,サニタイズすることが必要である。サニタイズとは,システムの安全な運用を脅かす文字列を,無害な文字列に変換することをいう。文字列の変換方法は,文字列を埋め込む場所によって異なる。
 当該アプリケーションでは,HTMLのタグの間(ただし,"<script>"と "</script>"との間は除く)に文字列を埋め込むケースと,JavaScriptの文字列として埋め込むケースの二つのケースでサニタイズする必要がある。サニタイズは,変換前の 文字列中の各文字を,それぞれ次のように変換することによって行うことにした。
  • HTMLのタグの間に文字列を埋め込むケース
    1. 英数字と次に示す文字は,そのまま出力する。
       !#$%()*+,−.:;=?@[\]^_`{|}~
    2. 表1に示す文字は,実体参照に変換する。
    3. その他の文字は,"&#ddd;"に変換する。ここで ddd は変換対象文字の文字コードを表す,最大で5桁の10進数である。また,変換前の文字列に含まれる各文字は,2バイトで表すことができるものとする。
  • JavaScriptの文字列として埋め込むケース
    1. 英数字は,そのまま出力する。
    2. 文字コードが256未満の英数字以外の文字は,"\xXX"に変換する。ここで,XXは変換対象の文字の文字コードを表す,2桁の16進数である。
    3. その他の文字は,"\uXXXX"に変換する。ここで,XXXXは変換対象の文字の文字コードを表す,4桁の16進数である。また,変換前の文字列に含まれる各文字は,2バイトで表すことができるものとする。
 クラス Encoder は,サニタイズを行うクラスが継承する抽象クラスである。パブリックメソッド encode は,引数で与えられた文字列をサニタイズし,結果を返す。クラス HtmlEncoder は,HTMLのタグに埋め込む文字列をサニタイズするクラスである。クラス JavaScriptEncoder は,JavaScriptの文字列として埋め込む文字列をサニタイズするクラスである。

設問1

プログラム1〜3中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
  • clear()
  • get(c)
  • put(c, String.valueOf(c))
  • remove(c)
b に関する解答群
  • : conversionTable.keySet()
  • : s.toCharArray()
  • = 0; c < s.length(); c++
  • = 0; s.indexOf(c) > 0; c++
c に関する解答群
  • addConversion(c, t)
  • addNoConversion(c)
  • conversionTable.get(c)
  • conversionTable.remove(c)
d に関する解答群
  • "&#" + (int) c + ";"
  • "&#" + c + ";"
  • "\\u" + (int) c
  • "\\u" + c
e に関する解答群
  • !=
  • <
  • ==
  • >

解答選択欄

  • a:
  • b:
  • c:
  • d:
  • e:

解答

  • a=
  • b=
  • c=
  • d=
  • e=

解説

この設問の解説はまだありません。

設問2

プログラム4を実行したときに,プログラム2のメソッド encode が呼び出される回数として正しい答えを,解答群の中から選べ。
 ここで,プログラム1〜3中の には正しい答えが入っているものとする。
pm11_3.gif/image-size:492×98
解答群
  • 0
  • 4
  • 5
  • 13
  • 30

解答選択欄

  •  

解答

  •  

解説

この設問の解説はまだありません。
【27年春期 午後問題】
 問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11 問12 問13
© 2010-2019 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop