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";
};