0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

知らないとヤバいCookieの属性、4選

Posted at

ブラウザCookieの属性には、Cookieのセキュリティや動作を制御する重要なものがいくつかあります。特にセキュリティやプライバシーを強化するために重要な属性を以下に示します。

1. HttpOnly

  • 説明: CookieがJavaScript経由でアクセスできないように制限する属性です。
  • 重要性: この属性を設定することで、XSS(クロスサイトスクリプティング)攻撃によってCookieが盗まれるリスクを軽減します。HttpOnly属性があるCookieは、document.cookieなどのJavaScriptコードではアクセスできません。
  • 使用例:
    Set-Cookie: session_id=abc123; HttpOnly;
    

2. Secure

  • 説明: CookieをHTTPS接続でのみ送信するように制限する属性です。
  • 重要性: Cookieの送信を暗号化されたHTTPS接続のみに限定することで、通信の盗聴によるCookie情報の漏洩を防ぐことができます。特にセッションIDやユーザー認証情報など、重要な情報を含むCookieに必須です。
  • 使用例:
    Set-Cookie: session_id=abc123; Secure;
    

3. SameSite

  • 説明: クロスサイトのリクエストに対してCookieを送信するかどうかを制御する属性です。
  • 重要性: CSRF(クロスサイトリクエストフォージェリ)攻撃を防ぐために重要です。SameSite属性には以下の3つの設定があります:
    • Strict: Cookieは同一オリジンのリクエストにのみ送信される。セキュリティを最も強化するオプション。
    • Lax: 一部のクロスサイトリクエスト(ナビゲーションやGETリクエスト)ではCookieが送信されるが、フォーム送信やPOSTリクエストなどには送信されない。
    • None: クロスサイトリクエストにもCookieが送信されるが、このオプションを使用する場合、Secure属性も付ける必要があります。
  • 使用例:
    Set-Cookie: session_id=abc123; SameSite=Strict;
    

4. Expires または Max-Age

  • 説明: Cookieの有効期限を設定する属性です。Expiresは特定の日時を設定し、Max-Ageは有効期間を秒数で指定します。
  • 重要性: Cookieのライフサイクルを制御することで、セッションCookieや長期間保持されるCookieの管理が可能になります。セキュリティ上の理由から、重要なCookieは有効期限を短く設定することが推奨されます。
  • 使用例:
    Set-Cookie: session_id=abc123; Expires=Wed, 21 Oct 2023 07:28:00 GMT;
    
    Set-Cookie: session_id=abc123; Max-Age=3600; // 1時間
    

これらの属性の重要性

  • HttpOnlySecure を組み合わせることで、CookieがJavaScript経由でアクセスされることを防ぎ、HTTPSを通じてのみ安全に送信されます。
  • SameSite 属性を設定することで、CSRF攻撃を防ぐ効果があります。
  • Expires/Max-Age により、有効期限を管理することで、セキュリティ上のリスクを最小化しつつ、Cookieの動作を制御できます。

これらの属性を適切に設定することで、Cookieを使用したWebアプリケーションのセキュリティとプライバシーが大きく向上します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?