Dancer(http://perldancer.org)でのCookie、ヘッダの扱いについて
最近「体系的に学ぶ 安全なWebアプリケーションの作り方」という本を読んでいて、「Dancerではどうするのだろう?」と気になった3点についてのメモです。
1. JavaScriptからアクセスしないCookieにはHttpOnly属性をつける。
Dancerでは、デフォルトでHttpOnly属性が指定されています。つまり単純にset_cookieを呼び出しただけでJavaScriptからアクセスできないCookieになります。
get '/default' => sub { set_cookie cookie_test => 'default'; return "default cookie"; };
反対にHttpOnly属性をつけたくない場合は、set_cookieの引数に「http_only => 0」を追加します。
get '/no_http_only' => sub { set_cookie cookie_no_http_only => 'no_http_only', http_only => 0; return "without HttpOnly"; };
2. https通信の場合だけ使用するCookieにはSecure属性をつける。
Secure属性はデフォルトでは指定されないので、set_cookieの引数に「secure => 1」を指定します。
get '/secure' => sub { set_cookie cookie_secure => 'secure', secure => 1; return "secure cookie"; };
3. HTTPのレスポンスヘッダにX-FRAME-OPTIONSを指定する。
header を使います。frameまたはiframe内に表示されないページはDENY、表示されるページはSAMEORIGINを指定します。
get '/x_frame_options' => sub { header 'X-FRAME-OPTIONS' => 'DENY'; return "X-FRAME-OPTIONS test"; };