1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩
2 研究目標 Servlet ・ JSP の安全なセッション管理 セッション管理 Web サーバーが複数のページ間でクライアントの情報を維 持するための仕組み 例・・・電子商取引における取引に関する情報など Servlet ・ JSP におけるセッション管理法 ID による自動的な管理 手動によって Form や cookie などに直接セッション情 報を格納
3 Data ID によるセッション管理 clientA clientB Web server (tomcat) ID=1 Account Password Data ・・ ・ ID=1 Account Password Data ・・ ・ ID=2 Account Password Data ・・ ・ ID=2 Account Password Data ・・ ・ ID=1 ID=2 クライアント毎に異なる ID を配 布 Server は ID を元にデータを管理 アクセス ID 確認 データ取得 インターネット チェック tomcat: サーブレットエンジン
4 従来のセッション ID 管理と問題点 HTTP コネクション毎に ID を自動的に管理 (Session クラス ) ID を cookie に格納 クライアント側で ID を管理 問題点 第三者に漏洩 → ID から個人情報取得・悪用 (クロスサイト スクリプティング) ID をリクエスト URL に格納 例: 問題点 リクエスト URL はリンク先のサーバに残る可能性が ある ( Referer 機能により)
5 手動のセッション管理 Form の利用 タグ・・・入力パラメータ無しのページ移動の手段 タグ・・・入力パラメータ付きのページ移動の手段 hidden パラメータへクライアント情報を入れる hidden パラメータ ・・・ Form のブラウザ上に表示されない INPUT フィールド ・・・比較的安全だとされている 使用上の問題点 ページ移動時には、 タグは使えず タグを使用しなく てはならない ブラウザの「戻る」機能が正常に機能しなくなる セッション管理に用いる場合、全てのページで Servlet ・ JSP コードを書き変えが大変である
6 本研究の提案 簡単で安全なセッション管理 ID の自動管理方式に選択肢を追加 ID の管理方式に hidden パラメータを追加 管理方式は三方式から選択可能 ( cookie ・リクエスト URL ・ hidden 方式) cookie をセキュアに拡張 cookie 使用時に自動的に認証を行うメソッドの 追加 Session クラス不使用時のセキュリティを向上
7 解決策 hidden パラメータ方式の追加 ID の自動管理方式に hidden パラメータを使用可能 に 自動で送信 h tmlファイルのコード変換 Form の INPUT 文の追加 JavaScript の挿入 → 手書きをしなくて済む → タグの使用が可能 ページの書き換えが大変である! タグを タグに変更 hidden パラメータ自体の書き込み
8 実際のコード変換 最終的な送信 html ファイルの内容を全てチェッ クし、 タグ 同 タグ内に の一行を追加する タグ 新たに Form のページを作成する JavaScript と、そ れを送信する JavaScript を書き加える リンクをクリックすると上記の JavaScript が起動 するよ うに タグを変更
9 起動する JavaScript コード function formwindow(href) { document.write( " “ ); document.write( “ ” ); document.write( “ document.NINNSHOU.submit() "); } Form ページ作成用 Script Form 送信用 Script hidden パラメータ
10 cookie 用の新メソッド Session クラスを用いない場合のセッション管 理 cookie 使用時に自動的に認証を行う cookie に格納された情報を取得する時に認証を行う 新メソッドを追加 旧メソッド: getValue () 新メソッド: secureGetValue () cookie 情報が盗まれても、認証をクリアさせなければ セッションジャックを防げる
11 Webstone ベンチマークによる実 験 hidden パラメータへ の変換の影響を調べ る 送信 html ファイルの 大きさを変えてサー バのスループットを 計測 考察 html 内のコード変換 が最も大きなボトル ネックとなっている
12 まとめ Tomcat への追加機能の提案と実装 安全とされる hidden パラメータ方式を セッション ID の管理方式 に追加 送信 html のコード変換することで自動化と タグの 使用を実現 ・・・見栄えの悪さを解消 cookie 使用時に自動的に認証を要求するメソッド 今後の課題 html ファイルのコード変換がパフォーマンス上の ボトルネックになっているので、ここを改善する