HOME模擬問題メニュー >Webサイトのセキュリティ(テクニカルエンジニア(情報セキュリティ) 平成18年度午後1問1)
 

模擬問題 Webサイトのセキュリティ(テクニカルエンジニア(情報セキュリティ) 平成18年度午後1問1)


問1

 
設問1 a:「HIDDEN」,b:「なし」,c:「あり」
a  HIDDENフィールドとは,画面には表示されずにWebページ間でデータの受渡しで利用されるHTMLフォーム項目です。例えば入力された会員IDから,会員ID別に異なるページを表示するプログラムを使うと,生成されたHTMLソースのBODY内に,<INPUT TYPE="HIDDEN" NAME="KAIIN" VALUE=<%= kaiin_4 %>>といったタグが入ります。これはWebブラウザでは表示されず,その値が次に表示されるページに受け渡されます。しかし,この情報はユーザのブラウザのソース表示で見ることができ,またWebブラウザに代わって改ざんした情報を送れば,他の会員ID向けのページも表示できる可能性があります。このようして,外部の者が関係者向けのページを表示させて,情報を引き出すことが可能になります。
b  クッキーはWebブラウザのあるクライアント側に残す情報です。そのため,Refererフィールドを使いません。
c  URLのクエリストリングとは,URLに付加するログイン情報などです。例えば,
http://www.kimura-kouichi.com/index.htm?user=kimura&pw=kouichi
というURLの場合,?から後ろの部分がクエリストリングです。このURLではindex.htmのページへアクセスし,同時にユーザIDとしてkimura,パスワードとしてkouichiを設定します。つまりクエリストリングを含んだURLをクリックするだけで,ユーザIDとパスワードの入力操作が不要でログインできます。同様にWebメールでも,ログインして受信トレイを表示させるまでのことを,クエリストリングを含んだURLのクリックで行えます。しかし,このクエリストリングを見られると,ユーザIDとパスワードが他人に分かってしまいます。またクエリストリングは,Webサーバのアクセスログやファイアウォールのログ,プロキシサーバのキャッシュやログ,Webブラウザのキャッシュや履歴にも残り,それらを見られたり解析されてしまうことで,他の設定情報や,設定項目から内部の構成が漏れてしまいます。クエリストリングの内容が,HTTPリクエストヘッダのRefererフィールドに設定されるので,情報漏えいの可能性があります。
 

設問2へ
 
設問2 
(1) 「サニタイジング処理」
クロスサイトスクリプティングによる攻撃を防ぐためには,入力データで,スクリプトとして動作する特別な意味を持つ文字をチェックし,無効な文字に置換する処理(エスケープ処理)を行います。これは無効化することであるため,滅菌に例えてサニタイジングとよばれます。
 
(2) d:「<」,e:「&lt;」
エスケープ処理では,「<」を「&lt;」に,「>」を「&gt;」に置換します。「>」の置換は空欄下にありますので,ここは対となる「<」の置換になります。なお置換した文字も実際は半角文字ですが,ブラウザでは正しく表示されないため全角文字で表示しています。
 
 

設問3へ
 
設問3 
(1) f:「32」,g:「14」,h:「32」,i:「80」
fは利用者ID部分で暗号化されますから,表4のencryptの戻り値であり32文字です。gは時刻であり,時刻は表4よりYYYYMMDDhhmmss形式ですから,14文字です。hはハッシュ値であり,表4のmake_hashの戻り値であり32文字です。iは,f,g,hの32文字+14文字+32文字=78文字に,共通鍵の可変部分の8ビット(=2文字)を加えますから,80文字です。ここでの文字は,表4のencryptにある128ビットで32文字という記述から,4ビットで1文字を表す16進数の数であるのがポイントです。
 
(2) 「共通鍵の長さが実質的に128ビットから120ビットとなり,共通鍵が解析されやすくなるから」
共通鍵の解析されにくさは,暗号化アルゴリズムと鍵のビット数に比例します。そのため可変部分を除いた共通鍵のビット数が128ビットから120ビットに減るということは,解析されやすさにつながります。
 

設問4へ
 
設問4
・「疑似乱数を用いて生成すること」
・「十分な長さの文字列とすること」
識別コードには生成時刻と利用者IDが含まれていますから,識別コードが解析されるとそれらが分かってしまいます。それにより,利用者IDが分かったり,生成時刻を使って識別コードが偽造されてしまいます。その対策として生成時刻と利用者IDを使わず,乱数を使って識別コードを生成します。乱数がなくても,疑似乱数を使うことで十分な安全性が得られます。また解析されにくさを向上させるには,文字数を増やすのも効果的です。
 

 
メニューに戻る