JAX-RS(Jersey)のcookieはデフォルトではセキュアではない?
Responseにセットできるcookieのsecure属性。省略できるけど、デフォルトはfalseになってる。気を付けたい。
具体的には以下のメソッド。
javax.ws.rs.core.NewCookie.NewCookie(javax.ws.rs.core.Cookie cookie)
このメソッドは、javax.ws.rs.core.Cookieを引数としてクッキーを生成するんだけど第5引数(secure属性)がfalseになってる。
public NewCookie(Cookie cookie) { this(cookie, null, DEFAULT_MAX_AGE, null, false, false); }
secure属性が「true」になっているとhttpsでしか送信されなくなるので「false」であることが脆弱性ではないけどhttp、httpsが混ざったサービスの場合、http通信時にクッキーの中身が平文で送信されてしまうので気を付ける必要がある。secure属性は必ず確認した上で指定しましょう。