今日、やったこと 入力チェック(HTML) エラーページ 入力内容の無害化(サニタイジング) セッションオブジェクトについて Cookieとセッション 今日のホワイトボード 入力チェック(HTML) HTML5には以下の入力チェック機能が追加されている。 type属性に応じた入力値の制約 required属性で入力必須制約 pattern属性で入力値のパターンによる制約 min属性、max属性で入力値の範囲の制約 maxlength属性で入力値の長さを制約 詳細は各自調べてください。 エラーページ いままでは実行時例外に対する処理をしていなかったため、エラー発生時にはスタックトレース画面が出力されていた。これはセキュリティ的に問題あり(サーバーのバージョンのようなサーバー環境がわかってしまう)のため、実行時例外発生時にはエラーページを表示するようにしたい。 設定ファイルweb.xmlでエラー毎のエラーページの設定ができる。 図 エラーページ 入力内容の無害化(サニタイジング) ユーザーの入力内容をそのまま出力すると問題が発生するケースがある。 例えば、HTMLのタグが入力された場合、そのまま出力するとWebブラウザはタグとして表示してしまう。 これを防ぐため、入力内容を取得するときや出力するときに 無害化(サニタイジング) を行う必要がある。 無害化(サニタイジング)は結構めんどくさいので、ライブラリを使ってください。 授業では「Apache common text」のStringEscapteUtilsクラスを利用しました。 「Apache common lang」にも同名のクラスがあるが、こちらは現在非推奨扱い。 図 無害化(サニタイジング) 作成中のアプリケーションを下図のように改造。 認証成功時はユーザー情報ページを表示する。 図 改造 セッションオブジェクト サーバーのセッションオブジェクトはクライアント毎に個別に用意される。 各セッションオブジェクトにはセッションIDが付与されている。クライアントにもセッションIDが付与され、リクエストごとにサーバーに送信することで、サーバーはクライアントとセッションオブジェクトを紐づけている。 サーバーとクライアント間でのセッションIDのやり取りの際、盗聴されるとセッションIDが漏洩してしまい、最悪セッションハイジャッ...