HttpOnly属性のない機密Cookie

HttpOnlyで機密Cookieへのスクリプトからのアクセスを防ぐ

説明

認証トークンやセッションIDを含むCookieにHttpOnlyがないと、ブラウザーのJavaScriptから値を読めます。XSSが発生した場合、攻撃者がCookieを盗み、利用者になりすます可能性があります。

想定される影響

  • セッションの乗っ取り
  • 認証トークンの漏えい
  • XSSと組み合わせたアカウントへのアクセス

対処方法

  1. 機密CookieにHttpOnly=trueを設定してください。
  2. Secure=trueと適切なSameSiteも設定してください。
  3. Cookie生成を共通化し、これらの属性を既定で適用してください。

例

変更前

java
Cookie cookie = new Cookie("sid", token);
response.addCookie(cookie);

変更後

java
Cookie cookie = new Cookie("sid", token);
cookie.setHttpOnly(true);
cookie.setSecure(true);
response.addCookie(cookie);

変更前はHttpOnlyがないため、ブラウザーのスクリプトが機密Cookieを読めます。変更後はHttpOnly=trueを明示し、暗号化した接続での送信も要求します。

参考資料