logo
GeekFormat

Trình phân tích Set-Cookie

Set-Cookie Parser

Dán các tiêu đề phản hồi Set-Cookie nhiều dòng để kiểm tra các thuộc tính và phát hiện các kết hợp SameSite / Secure rủi ro.

Thẻ Thuộc tính Cookie

2 Set-Cookie
#1sessionabc123
path/
httponly(cờ)
secure(cờ)
samesiteLax
Không tìm thấy vấn đề thuộc tính rõ ràng nào
#2preview1
max-age600 (10m 0s)

setCookieParser.attr.maxAgeHint

samesiteNone
secure(cờ)
setCookieParser.warn.missingHttpOnlysetCookieParser.warn.missingPath

Xem trước JSON

[
  {
    "index": 0,
    "raw": "session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax",
    "name": "session",
    "value": "abc123",
    "decodedValue": "abc123",
    "attributes": [
      {
        "key": "path",
        "value": "/"
      },
      {
        "key": "httponly",
        "value": null
      },
      {
        "key": "secure",
        "value": null
      },
      {
        "key": "samesite",
        "value": "Lax"
      }
    ],
    "attributeMap": {
      "path": "/",
      "httponly": true,
      "secure": true,
      "samesite": "Lax"
    },
    "warnings": []
  },
  {
    "index": 1,
    "raw": "preview=1; Max-Age=600; SameSite=None; Secure",
    "name": "preview",
    "value": "1",
    "decodedValue": "1",
    "attributes": [
      {
        "key": "max-age",
        "value": "600"
      },
      {
        "key": "samesite",
        "value": "None"
      },
      {
        "key": "secure",
        "value": null
      }
    ],
    "attributeMap": {
      "max-age": "600",
      "samesite": "None",
      "secure": true
    },
    "warnings": [
      "warn.missingHttpOnly",
      "warn.missingPath"
    ]
  }
]

Dán tiêu đề Set-Cookie, bạn sẽ ngay lập tức có câu trả lời tại sao trình duyệt không nhận Cookie.

Đề xuất Liên quan

Trường hợp sử dụng

  • Khi trình duyệt từ chối ghi Cookie, nhanh chóng xác định xem đó là sự cố chính sách SameSite, thiếu cờ Secure hay không khớp Path/Domain
  • Khi Cookie bị trình duyệt chặn trong các kịch bản đăng nhập bên thứ ba/SSO/nhúng iframe, kiểm tra xem SameSite=None có được kết hợp đúng cách với Secure không
  • Khi kiểm toán bảo mật, kiểm tra hàng loạt xem Cookie được trả về từ giao diện có đặt đầy đủ HttpOnly để ngăn chặn đánh cắp XSS hay không, có đặt Secure để ngăn chặn truyền văn bản rõ HTTP hay không
  • Khi sử dụng Cookie tiền tố __Host-/__Secure-, xác minh xem có đáp ứng các yêu cầu bắt buộc của RFC 6265bis hay không, tránh bị trình duyệt loại bỏ im lặng
  • Khi gỡ lỗi giải pháp phân vùng Cookie bên thứ ba CHIPS (Partitioned Cookie), xác nhận rằng Partitioned và Secure được khai báo đồng thời
  • Khi máy chủ đặt Max-Age/Expires, xác nhận giá trị hợp lệ, tránh Cookie hết hạn ngay lập tức do độ lệch đồng hồ hoặc Max-Age=0
  • So sánh sự khác biệt của tiêu đề Set-Cookie giữa các môi trường khác nhau (phát triển/kiểm thử/sản xuất), khắc phục sự cố kỳ lạ Cookie bị mất trong môi trường sản xuất khi môi trường phát triển bình thường
  • Sao chép toàn bộ đoạn tiêu đề phản hồi từ DevTools hoặc curl, không cần xóa thủ công tiền tố Set-Cookie:, công cụ tự động nhận dạng và loại bỏ
  • Khi viết tài liệu giao diện hoặc lỗi liên quan đến yêu cầu WASM/WebWorker, dán trực tiếp kết quả JSON đã phân tích vào tài liệu để minh họa cấu trúc Cookie

Tính năng

  • Phân tích độc lập nhiều Cookie: Mỗi dòng Set-Cookie thành thẻ riêng, hiển thị số thứ tự, tên, giá trị và giá trị giải mã URL, dễ dàng nhận ra Cookie nào có vấn đề
  • Kiểm tra bảo mật 14 thuộc tính: Tự động nhận dạng các lỗi phổ biến như SameSite=None thiếu Secure, giá trị SameSite không hợp lệ, Partitioned thiếu Secure, thiếu HttpOnly, thiếu Path, thiếu SameSite, vi phạm tiền tố __Host-, __Secure- thiếu Secure, Max-Age không hợp lệ/bằng 0, Domain bắt đầu bằng dấu chấm, Expires không cấu hình Max-Age, v.v.
  • Phân tách đầy đủ tất cả thuộc tính: Liệt kê từng mục SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned, thuộc tính dạng flag và thuộc tính có giá trị hiển thị rõ ràng
  • Chuyển đổi tự động Max-Age: Tự động chuyển đổi số giây thành thời gian dễ đọc theo ngày/giờ/phút/giây, ví dụ Max-Age=2592000 sẽ hiển thị là 30d
  • Hiển thị tự động giá trị giải mã URL: Khi giá trị Cookie chứa mã hóa %XX, tự động hiển thị văn bản gốc sau giải mã (ví dụ sessionID%3Dabc → sessionID=abc), được đánh dấu bằng mũi tên màu xanh lá
  • Kiểm tra tiền tố RFC 6265bis: Kiểm tra nghiêm ngặt các yêu cầu tuân thủ của Cookie tiền tố __Host- và __Secure-, bao gồm Path=/, cấm Domain, phải đặt Secure
  • Sao chép một lần nhấp tiêu đề gốc: Tổng hợp và sao chép tất cả các dòng Set-Cookie gốc đã phân tích, thuận tiện để dán vào email, Issue, tài liệu để chia sẻ với nhóm
  • Xem trước JSON có cấu trúc: Kết quả phân tích hỗ trợ xuất định dạng JSON, bao gồm các trường đầy đủ name/value/decodedValue/attributes/attributeMap/warnings, có thể sử dụng trực tiếp cho tập lệnh và trường hợp kiểm thử
  • Xử lý hoàn toàn cục bộ: Nội dung Set-Cookie được phân tích cục bộ trong trình duyệt, không tải lên bất kỳ máy chủ nào, tránh rò rỉ thông tin nhạy cảm như Session, Token
  • Huy hiệu cảnh báo thông minh: Mỗi vấn đề được đánh dấu bằng huy hiệu cảnh báo màu cam với lý do cụ thể, không cần tra cứu tài liệu RFC từng mục
  • Nhập hàng loạt nhiều dòng: Dán một lần toàn bộ đoạn tiêu đề phản hồi (ví dụ sao chép từ bảng Network của Chrome DevTools), tự động loại bỏ tiền tố Set-Cookie: và phân tích từng dòng
  • Hỗ trợ giá trị có dấu ngoặc kép và dấu chấm phẩy: Xử lý chính xác giá trị Cookie có dấu ngoặc kép theo chuẩn RFC và dấu chấm phẩy trong ngày Expires, không phân tách sai

Cách Sử dụng

  1. Mở bảng Network của DevTools trình duyệt, tìm yêu cầu mục tiêu, sao chép nội dung Set-Cookie trong vùng Response Headers (hỗ trợ nhiều dòng, sao chép tất cả Cookie một lần)
  2. Dán tiêu đề phản hồi Set-Cookie đã sao chép vào vùng nhập, mỗi dòng một Cookie (không cần xóa thủ công tiền tố Set-Cookie:, công cụ sẽ tự động loại bỏ)
  3. Công cụ phân tích theo thời gian thực, phần trên cùng hiển thị số lượng Set-Cookie đã nhận dạng, bên dưới mỗi Cookie độc lập thành một thẻ thuộc tính
  4. Phần đầu thẻ hiển thị số thứ tự, tên Cookie, giá trị gốc; nếu giá trị chứa mã hóa URL, giá trị sau giải mã sẽ hiển thị sau mũi tên màu xanh lá
  5. Phần chính thẻ hiển thị từng thuộc tính theo SameSite, Secure, HttpOnly, Path, Domain, Max-Age, Expires, Partitioned, v.v., Max-Age sẽ tự động kèm theo dấu ngoặc đơn chuyển đổi thời gian dễ đọc
  6. Phần cuối thẻ hiển thị kết quả kiểm tra: Huy hiệu cảnh báo màu cam đánh dấu vấn đề cụ thể (mỗi vấn đề có giải thích tiếng Việt rõ ràng), huy hiệu màu xanh lá cho biết không tìm thấy vấn đề rõ ràng
  7. Khi cần đối chiếu cấu hình máy chủ, nhấp vào「Sao chép tiêu đề gốc」để sao chép tất cả các dòng Set-Cookie gốc; khi cần xử lý theo chương trình, xem「Xem trước JSON」

Câu hỏi Thường gặp

Tại sao tiêu đề Set-Cookie đặt thành công nhưng trình duyệt không lưu Cookie của tôi?

Đây là vấn đề phổ biến nhất, trình duyệt sẽ không chủ động báo lỗi mà lặng lẽ loại bỏ Cookie không tuân thủ. Các lý do phổ biến bao gồm: SameSite=None thiếu Secure, Cookie Secure được đặt trên trang HTTP (ngoại trừ localhost), tiền tố __Host-/__Secure- không đáp ứng ràng buộc, Domain/Path không khớp, vượt quá giới hạn kích thước 4KB, Max-Age bằng 0 hoặc số âm. Khuyến nghị trước tiên dán Set-Cookie vào công cụ này, xem huy hiệu cảnh báo để xác định nguyên nhân cụ thể, sau đó mở Chrome DevTools → Application → Cookies, xem dưới tên miền tương ứng có tam giác cảnh báo màu vàng không, di chuột có thể thấy lý do từ chối cụ thể.

Sự khác biệt thực sự giữa Strict, Lax, None của SameSite là gì? Khi nào sử dụng cái nào?

Strict hoàn toàn không cho phép gửi chéo trang, an toàn nhất nhưng người dùng nhấp vào từ liên kết ngoài sẽ hiển thị chưa đăng nhập, phù hợp với Cookie cho các thao tác nhạy cảm như thanh toán/đổi mật khẩu. Lax là giá trị mặc định của Chrome 80+, cho phép mang theo khi điều hướng quay lại thông qua điều hướng GET cấp cao nhất (nhấp liên kết ngoài quay lại trang web của bạn), nhưng không mang theo trong các tài nguyên con như iframe/img/script/XHR/biểu mẫu POST, là giá trị khuyến nghị cho hầu hết các kịch bản. None cho phép gửi trong tất cả các kịch bản chéo trang (dùng cho đăng nhập một lần SSO, nhúng iframe bên thứ ba, gọi API chéo trang), nhưng phải đặt cùng lúc Secure, nếu không trình duyệt sẽ từ chối trực tiếp.

Tại sao SameSite=None phải kết hợp với Secure?

Đây là quy tắc được Chrome thực thi bắt buộc từ phiên bản 80 (tháng 2 năm 2020), Firefox, Edge, Safari cũng đã theo kịp. Bởi vì SameSite=None rõ ràng cho phép gửi Cookie chéo trang, kẻ tấn công dễ dàng hơn trong việc thực hiện tấn công CSRF hoặc nghe lén trong kịch bản chéo trang, phải kết hợp với Secure (truyền mã hóa HTTPS) để giảm rủi ro. Nếu Cookie SameSite=None của bạn được đặt dưới HTTP, trình duyệt sẽ loại bỏ trực tiếp mà không lưu trữ. Công cụ này sẽ phát hiện tổ hợp SameSite=None thiếu Secure và cảnh báo màu đỏ.

Sử dụng Max-Age hay Expires? Sự khác biệt là gì?

Ưu tiên sử dụng Max-Age. Max-Age là thời gian tương đối (hết hạn sau bao nhiêu giây), không phụ thuộc vào đồng hồ máy khách, trình duyệt bắt đầu đếm ngược sau khi nhận được; Expires là thời điểm tuyệt đối, phụ thuộc vào thời gian cục bộ của máy tính người dùng (người dùng đổi đồng hồ thành 1970 thì Cookie hết hạn ngay lập tức). Khi cả hai cùng tồn tại, Max-Age có ưu tiên cao hơn (RFC 6265 quy định rõ ràng). Nếu cả hai không được đặt, Cookie trở thành「Cookie phiên」, hết hiệu lực khi trình duyệt đóng. Công cụ này sẽ đưa ra gợi ý cho trường hợp đã đặt Expires nhưng không đặt Max-Age, khuyến nghị bổ sung Max-Age. Lưu ý đơn vị Max-Age là giây không phải mili giây.

Sự khác biệt giữa Path=/ và không đặt Path là gì?

Path quyết định trình duyệt sẽ mang theo Cookie này trong các yêu cầu của đường dẫn URL nào. Khi không đặt Path, trình duyệt mặc định sử dụng「đường dẫn sau khi loại bỏ đoạn cuối cùng của URL phản hồi」, ví dụ đặt Cookie từ /api/user/login, Path mặc định là /api/user/, thì yêu cầu dưới đường dẫn / và /order/ sẽ không mang theo Cookie này. Đặt rõ ràng Path=/ có thể làm cho Cookie có hiệu lực đối với toàn bộ trang web. Lưu ý khớp Path là khớp tiền tố, Path=/api cũng sẽ khớp với /api/, /api/user, /api/v2/abc, v.v. Cookie tiền tố __Host- bắt buộc yêu cầu Path=/.

Sự khác biệt giữa Domain bắt đầu bằng dấu chấm (ví dụ .example.com) và không có dấu chấm là gì?

Trong các trình duyệt hiện đại (phiên bản gần đây của Chrome, Firefox, Edge, Safari), cả hai đã tương đương, đều làm cho Cookie có hiệu lực đối với example.com và tất cả các miền con của nó (a.example.com, b.c.example.com). Dấu chấm ở đầu là cách viết cũ từ thời RFC 2109, RFC 6265 đã quy định rõ ràng bỏ qua dấu chấm ở đầu. Tuy nhiên, để dễ đọc, khuyến nghị viết dạng không có dấu chấm. Công cụ này sẽ đưa ra gợi ý cho trường hợp Domain có dấu chấm ở đầu (không phải lỗi, nhưng là cách viết lịch sử). Lưu ý: Khi không đặt Domain, Cookie chỉ có hiệu lực đối với máy chủ hiện tại (miền con không mang theo), sau khi đặt Domain sẽ có hiệu lực đối với miền con.

Tiền tố __Host- và __Secure- là gì? Có thể không viết tiền tố không?

Đây là tiền tố bảo mật tên Cookie được giới thiệu bởi RFC 6265bis, dùng để thêm ràng buộc cứng cho Cookie bảo mật cao: khi trình duyệt thấy tên Cookie bắt đầu bằng __Host-, sẽ bắt buộc yêu cầu phải đồng thời đặt Secure, Path=/, không được đặt Domain, một trong các điều kiện không đáp ứng sẽ từ chối lưu trữ trực tiếp; tiền tố __Secure- yêu cầu phải đặt Secure, các thuộc tính khác có thể cấu hình. Không viết tiền tố cũng có thể hoạt động (hầu hết Cookie không sử dụng tiền tố), nhưng đối với Cookie bảo mật cao như định danh phiên, Token ủy quyền, rất khuyến nghị sử dụng tiền tố __Host-, vì nó có thể ngăn chặn tấn công tiêm Cookie ở cấp miền con/đường dẫn. Công cụ này sẽ tự động kiểm tra tính tuân thủ của hai loại tiền tố.

HttpOnly Cookie có thực sự an toàn không? Ngăn chặn XSS và CSRF không?

HttpOnly có thể ngăn JavaScript đọc giá trị Cookie thông qua document.cookie, là tuyến phòng thủ quan trọng để <strong>giảm thiểu đánh cắp phiên XSS</strong>, nhưng không phải vạn năng: kẻ tấn công XSS vẫn có thể gửi yêu cầu (yêu cầu tự động mang theo Cookie) trong trình duyệt người dùng để thực hiện thao tác (đây là phạm vi CSRF); HttpOnly cũng không thể phòng thủ tấn công CSRF (cần kết hợp SameSite hoặc CSRF Token). Chỉ khi sử dụng đồng thời bộ ba HttpOnly+Secure+SameSite=Lax/Strict mới đạt được mức bảo mật cơ bản. Cookie nhạy cảm (session, JWT, access_token) phải là HttpOnly, không cần thiết không cho JS phía trước đọc. Công cụ này sẽ cảnh báo Cookie thiếu HttpOnly.

Partitioned (CHIPS) Cookie là gì? Khi nào cần sử dụng?

Partitioned là thuộc tính mới được Chrome giới thiệu để đối phó với việc loại bỏ Cookie bên thứ ba, tên đầy đủ là Cookies Having Independent Partitioned State (CHIPS). Cookie bên thứ ba truyền thống (ví dụ Cookie được đặt bởi dịch vụ quảng cáo/nhúng trên nhiều trang web) được chia sẻ toàn cục, sẽ được sử dụng để theo dõi người dùng chéo trang. Sau khi thêm Partitioned, trình duyệt sẽ lưu trữ riêng biệt Cookie bên thứ ba đó theo trang web cấp cao nhất: Cookie bên thứ ba người dùng thấy trên trang A và trang B hoàn toàn độc lập, không thể chia sẻ danh tính chéo trang. Kịch bản sử dụng: thành phần video/bản đồ/thanh toán nhúng, plugin dịch vụ khách hàng bên thứ ba, nhúng iframe SSO chéo trang. Sử dụng Partitioned phải đặt cùng lúc Secure, khuyến nghị kết hợp với tiền tố __Host-.

Một Cookie tối đa có thể lưu trữ bao nhiêu? Mỗi tên miền có thể đặt bao nhiêu?

Theo RFC 6265, trình duyệt ít nhất hỗ trợ 4096 byte cho mỗi Cookie (bao gồm tên, giá trị và thuộc tính), các trình duyệt chính (Chrome/Firefox/Safari/Edge) đều thực hiện theo giới hạn này, phần vượt quá sẽ bị cắt ngắn hoặc loại bỏ im lặng. Giới hạn số lượng khác nhau tùy trình duyệt: Chrome khoảng 180 mỗi tên miền, Firefox khoảng 150, Safari khoảng 600 (và bị ảnh hưởng bởi chính sách dọn dẹp bảy ngày ITP), sau khi vượt quá trình duyệt sẽ loại bỏ Cookie cũ nhất theo chiến lược LRU. Khuyến nghị Cookie chỉ lưu trữ định danh phiên, không đặt đoạn dữ liệu nghiệp vụ lớn vào Cookie (dữ liệu nghiệp vụ đặt vào localStorage hoặc Session máy chủ).

Có hỗ trợ sao chép Set-Cookie trực tiếp từ Chrome DevTools để phân tích không? Cần xóa tiền tố thủ công không?

Hoàn toàn hỗ trợ, không cần xử lý thủ công. Bạn có thể trong Chrome DevTools → bảng Network nhấp vào yêu cầu mục tiêu, sao chép trực tiếp giá trị Set-Cookie bằng cách nhấp chuột phải trong vùng Response Headers (khi nhiều dòng, Ctrl/⌘+nhấp để chọn nhiều hoặc sao chép toàn bộ đoạn), dán vào vùng nhập công cụ này là được. Công cụ sẽ tự động loại bỏ tiền tố Set-Cookie: ở đầu mỗi dòng (không phân biệt chữ hoa chữ thường), tự động xử lý khoảng trắng đầu dòng cuối dòng, xử lý chính xác các ký tự đặc biệt như dấu phẩy, dấu chấm phẩy chứa trong ngày Expires, cũng có thể xử lý chính xác giá trị Cookie có dấu ngoặc kép.

Tại sao ký tự không phải ASCII hoặc ký tự đặc biệt trong giá trị Cookie lại trở thành dạng %XX?

RFC 6265 yêu cầu giá trị Cookie chỉ có thể sử dụng một tập con an toàn trong bộ ký tự ASCII, không thể trực tiếp chứa ký tự không phải ASCII, khoảng trắng, dấu phẩy, dấu chấm phẩy, v.v. Nhiều framework phía máy chủ khi đặt Cookie sẽ tự động thực hiện mã hóa URL (encodeURIComponent/Percent-encoding) cho các ký tự không phải ASCII, ví dụ chuỗi tiếng Việt có dấu sẽ được mã hóa thành dạng %XX. Trình duyệt cũng giữ dạng mã hóa khi gửi lại. Khi công cụ này phát hiện giá trị chứa mã hóa %XX, sẽ tự động hiển thị văn bản gốc sau giải mã decodeURIComponent bằng mũi tên màu xanh lá bên cạnh giá trị gốc, thuận tiện cho bạn xem nội dung thực.

Sự khác biệt giữa Set-Cookie và tiêu đề yêu cầu Cookie là gì?

Hai tiêu đề này hoàn toàn khác hướng: Set-Cookie là tiêu đề phản hồi (máy chủ → trình duyệt), chỉ xuất hiện trong phản hồi, có thể xuất hiện nhiều lần, mỗi lần đặt một Cookie, chứa đầy đủ thuộc tính (Secure/HttpOnly/Path/Domain, v.v.); Cookie là tiêu đề yêu cầu (trình duyệt → máy chủ), mỗi yêu cầu chỉ xuất hiện một lần, bên trong là các cặp name=value phẳng của tất cả Cookie hiện tại khớp phạm vi (name1=v1; name2=v2), hoàn toàn không chứa thông tin thuộc tính. Nghĩa là máy chủ không thể biết từ yêu cầu xem một Cookie có đặt HttpOnly hay Secure không, thông tin thuộc tính chỉ được trình duyệt lưu giữ cục bộ. Để phân tích tiêu đề yêu cầu Cookie, vui lòng sử dụng <a href='/network/http-cookie-parser/'>Trình phân tích tiêu đề yêu cầu Cookie</a> đi kèm.

Tại sao Cookie của tôi trong Safari biến mất sau vài ngày?

Đây là cơ chế ngăn chặn theo dõi thông minh (ITP: Intelligent Tracking Prevention) của Safari hoạt động. Từ ITP 2.1, nếu người dùng không tương tác trực tiếp với tên miền đó trong 7 ngày (tức là không truy cập trực tiếp trang web của tên miền đó), Safari sẽ dọn dẹp tất cả Cookie và dữ liệu trang web dưới tên miền đó, bất kể Max-Age/Expires đặt bao lâu. Điều này ảnh hưởng lớn nhất đến các dịch vụ nhúng bên thứ ba, đối với Cookie trang chính không bị ảnh hưởng khi người dùng truy cập liên tục. Ngoài ra, Safari cũng hạn chế Cookie bên thứ ba nghiêm ngặt hơn Chrome. Các giải pháp bao gồm: sử dụng thuộc tính Partitioned, yêu cầu quyền thông qua Storage Access API, hoặc làm mới lại Cookie khi người dùng truy cập trang chính. Chương khắc phục sự cố của công cụ này có hướng dẫn gỡ lỗi Safari chi tiết hơn.

Công cụ có hỗ trợ phân tích hàng loạt nhiều Set-Cookie không? Có tải nội dung Cookie lên máy chủ không?

Hỗ trợ phân tích hàng loạt. Vùng nhập hỗ trợ dán bất kỳ nhiều dòng Set-Cookie nào (ví dụ dán một lần toàn bộ đoạn tiêu đề phản hồi), mỗi Set-Cookie sẽ được phân tích với số thứ tự độc lập, nhiều thẻ thuộc tính hiển thị riêng biệt thuộc tính và cảnh báo của từng cái. Tất cả quá trình phân tích hoàn toàn được hoàn thành cục bộ trong trình duyệt của bạn (xử lý JavaScript phía trước thuần túy), nội dung Cookie không được tải lên bất kỳ máy chủ nào, cũng không gửi yêu cầu mạng, thông tin nhạy cảm như Session/Token bạn dán sẽ không rời khỏi máy tính của bạn, có thể yên tâm sử dụng.

术语表

Set-Cookie
Tiêu đề phản hồi HTTP, thông qua đó máy chủ chỉ thị trình duyệt lưu trữ Cookie, có thể xuất hiện nhiều lần trong một phản hồi.
Cookie (tiêu đề yêu cầu)
Tiêu đề yêu cầu HTTP, danh sách cặp tên-giá trị Cookie đáp ứng yêu cầu phạm vi được trình duyệt tự động đính kèm, không chứa thuộc tính.
HttpOnly
Cờ thuộc tính Cookie. Sau khi đặt, JavaScript không thể đọc Cookie này thông qua document.cookie, chủ yếu phòng thủ chống đánh cắp phiên XSS.
Secure
Cờ thuộc tính Cookie. Sau khi đặt, trình duyệt chỉ gửi Cookie này trong kết nối mã hóa HTTPS (hoặc localhost).
SameSite
Thuộc tính Cookie, kiểm soát xem yêu cầu chéo trang có mang theo Cookie hay không, giá trị là Strict/Lax/None. Chrome 80+ mặc định là Lax.
Max-Age
Thuộc tính Cookie, chỉ định số giây Cookie tồn tại, ưu tiên cao hơn Expires, khuyến nghị sử dụng. =0 có nghĩa là xóa ngay lập tức.
Expires
Thuộc tính Cookie, chỉ định thời điểm hết hạn cụ thể của Cookie (HTTP-date), phụ thuộc vào đồng hồ máy khách.
Path
Thuộc tính Cookie, giới hạn tiền tố đường dẫn URL mà Cookie có hiệu lực, mặc định lấy phần thư mục của URL phản hồi.
Domain
Thuộc tính Cookie, giới hạn tên miền mà Cookie có hiệu lực. Khi không đặt, chỉ giới hạn ở máy chủ hiện tại; khi đặt, sẽ có hiệu lực đối với miền con.
Partitioned (CHIPS)
Cờ thuộc tính Cookie, bật lưu trữ phân vùng Cookie bên thứ ba, là giải pháp thay thế sau khi Chrome loại bỏ Cookie bên thứ ba, phải kết hợp với Secure.
Tiền tố __Host-
Ràng buộc bảo mật tiền tố tên Cookie. Yêu cầu phải Secure, Path=/, không được đặt Domain, vi phạm thì trình duyệt từ chối lưu trữ.
Tiền tố __Secure-
Ràng buộc bảo mật tiền tố tên Cookie. Yêu cầu phải đặt Secure, vi phạm thì trình duyệt từ chối lưu trữ.
Cookie phiên (Session Cookie)
Cookie không đặt Max-Age và Expires, tự động xóa sau khi trình duyệt đóng.
Cookie bên thứ ba (Third-party Cookie)
Cookie được đặt dưới tên miền ngoài tên miền của trang đang truy cập, thường được đặt bởi các dịch vụ bên thứ ba như quảng cáo, theo dõi, nhúng iframe, các trình duyệt đang dần hạn chế.

Bảng tra cứu nhanh so sánh ba chiến lược SameSite

Bảng tham khảo đầy đủ thuộc tính Set-Cookie (RFC 6265bis)

Giới hạn kích thước và số lượng Set-Cookie phổ biến của trình duyệt

Troubleshooting