Hướng dẫn

Cookie là gì? Cách website ghi nhớ bạn

Cookie là một đoạn văn bản nhỏ mà website yêu cầu trình duyệt lưu lại, rồi gửi lại mỗi lần bạn truy cập site đó về sau. Đó là cách một website "nhớ" bạn — rằng bạn đã đăng nhập, trong giỏ hàng có gì, bạn đã chọn ngôn ngữ nào. Cookie chỉ là dữ liệu, không phải chương trình, nhưng vì chúng có thể nhận diện bạn, chúng quan trọng cho cả bảo mật lẫn quyền riêng tư.

Vì sao điều này quan trọng khi bạn xây bằng AI

Cookie nằm bên dưới nhiều tính năng bạn sẽ yêu cầu từ công cụ AI, thường mà không cần nhắc đến từ "cookie":

  • Đăng nhập. Trong hầu hết web app, "giữ đăng nhập" nghĩa là một cookie phiên. Cách cookie đó được cấu hình quyết định nó dễ bị đánh cắp đến mức nào.
  • Giỏ hàng và tùy chọn. Giỏ hàng còn nguyên sau khi tải lại trang thường dựa vào cookie hoặc bộ nhớ trình duyệt.
  • Phân tích và quảng cáo. Thêm Google Analytics, pixel Meta hay widget chat thường kéo theo cookie từ các công ty khác.
  • Thông báo pháp lý. Ở nhiều nơi, một số cookie cần sự đồng ý của khách truy cập trước, và đó là nguồn gốc của banner cookie.

Nếu bạn biết app của mình đặt những cookie nào và vì sao, bạn có thể đưa ra lựa chọn tốt hơn về cài đặt bảo mật, sự đồng ý và chính sách quyền riêng tư.

Một ví dụ đời thường

Hãy nghĩ đến phiếu gửi đồ ở quầy giữ áo khoác. Bạn đưa áo khoác và nhận một chiếc phiếu có số. Phiếu không chứa áo của bạn — chỉ là một con số. Mỗi lần quay lại quầy, bạn đưa phiếu, và nhân viên biết áo nào là của bạn.

Cookie phiên hoạt động theo cách tương tự. Khi bạn đăng nhập, máy chủ giữ thông tin của bạn ở phía nó và đưa cho trình duyệt một "phiếu" — một ID ngẫu nhiên dài. Trình duyệt đưa phiếu đó trong mọi yêu cầu, và máy chủ tra cứu xem bạn là ai. Ai sao chép được phiếu đó thì có thể lấy được áo, vì vậy cookie đăng nhập cần được bảo vệ.

Cookie thực sự hoạt động thế nào

  1. Bạn truy cập một site. Phản hồi của máy chủ bao gồm một header như Set-Cookie: session_id=8f3k...; HttpOnly; Secure; SameSite=Lax.
  2. Trình duyệt lưu nó, gắn với tên miền của site đó.
  3. Trong mọi yêu cầu sau đó tới cùng site, trình duyệt tự động thêm Cookie: session_id=8f3k....
  4. Máy chủ đọc nó và biết đó là bạn.

JavaScript của trang cũng có thể tạo cookie, nhưng những cookie quan trọng nhất — phiên đăng nhập — nên được máy chủ đặt và giấu khỏi JavaScript.

Các loại cookie

LoạiNghĩa là gìVí dụ
Cookie phiênKhông có ngày hết hạn; bị xóa khi phiên trình duyệt kết thúcMột bước thanh toán ngắn hạn
Cookie lâu dàiCó ngày hết hạn (Expires hoặc Max-Age) và tồn tại qua các lần khởi động lại"Ghi nhớ tôi trong 30 ngày"
Bên thứ nhấtDo site trên thanh địa chỉ đặtĐăng nhập của bạn trên site đó
Bên thứ baDo một tên miền khác được nhúng trên trang đặtMã theo dõi của mạng quảng cáo
Thiết yếuCần thiết cho dịch vụ mà người dùng yêu cầuPhiên đăng nhập, giỏ hàng
Không thiết yếuHữu ích nhưng không bắt buộc đối với chủ sitePhân tích, quảng cáo, A/B testing

Các trình duyệt ngày càng hạn chế cookie bên thứ ba vì chúng được dùng để theo dõi người ta qua các website. Nhiều trình duyệt lớn hiện chặn phần lớn chúng theo mặc định, và chi tiết vẫn thay đổi liên tục, vì vậy đừng xây bất cứ thứ gì quan trọng dựa trên cookie bên thứ ba.

Ví dụ thực tế: một cửa hàng online nhỏ

Giả sử bạn đã xây một cửa hàng bán nến thủ công. Dưới đây là những cookie một phiên bản hợp lý sẽ đặt, và vì sao.

session — được đặt khi chủ shop hoặc khách hàng đăng nhập. Nó chỉ giữ một ID ngẫu nhiên; máy chủ giữ dữ liệu phiên thật. Thiết lập: HttpOnly (mã trang không thể đọc), Secure (chỉ gửi qua HTTPS), SameSite=Lax (không gửi trong hầu hết yêu cầu do site khác khởi tạo). Thiết yếu.

cart_id — cho phép khách chưa đăng nhập giữ giỏ hàng của mình. Nó trỏ tới một giỏ hàng được lưu trong database. Thiết yếu, vì khách đã yêu cầu thêm món vào giỏ.

theme — ghi nhớ chế độ tối. Đây có thể là một cookie, nhưng nó không bao giờ cần đến máy chủ, nên localStorage của trình duyệt đơn giản hơn.

Cookie phân tích — được thêm nếu bạn cài một công cụ phân tích. Đây là cookie không thiết yếu. Ở EU và Anh, chúng thường cần sự đồng ý trước khi được đặt, vì vậy script phân tích nên chờ cho đến khi khách bấm "Chấp nhận".

Lưu ý shop không lưu những gì trong cookie: tên, địa chỉ hay thông tin thẻ của khách. Cookie đi kèm mọi yêu cầu và nằm trên thiết bị của người dùng, nên chúng chỉ nên giữ ID, không phải dữ liệu cá nhân.

Thuật ngữ thường gặp

Thuật ngữNghĩa là gì
CookieMột cặp tên-giá trị nhỏ mà trình duyệt lưu và gửi lại cho site.
Set-CookieHeader phản hồi mà máy chủ dùng để tạo hoặc cập nhật cookie.
SessionBản ghi của máy chủ về một người dùng đã đăng nhập, gắn với một ID cookie.
HttpOnlyNgăn JavaScript của trang đọc cookie, giúp hạn chế thiệt hại từ các script bị chèn vào.
SecureCookie chỉ được gửi qua kết nối HTTPS được mã hóa.
SameSiteKiểm soát việc cookie có được gửi trong yêu cầu từ site khác hay không (Strict, Lax hoặc None).
Expires / Max-AgeKhi nào cookie nên bị xóa.
Domain / PathNhững địa chỉ nào trên site sẽ nhận cookie.
localStorageBộ nhớ trình duyệt mà mã trang có thể đọc, nhưng không được tự động gửi lên máy chủ.
XSSCross-site scripting: script của kẻ tấn công chạy trong trang của bạn, có thể cố đánh cắp dữ liệu.
CSRFCross-site request forgery: site khác lừa trình duyệt gửi một yêu cầu kèm cookie của bạn.
Đồng ý cookieXin phép khách truy cập trước khi đặt các cookie không thiết yếu.

Những lỗi thường gặp và hiểu nhầm

  • "Cookie là virus." Chúng là văn bản thuần túy. Chúng không thể chạy mã trên máy tính của bạn.
  • Đặt dữ liệu nhạy cảm vào cookie. Hãy lưu một ID ngẫu nhiên và giữ chi tiết trên máy chủ.
  • Token đăng nhập trong localStorage. Bất kỳ script nào chạy trên trang đều đọc được localStorage, kể cả script bị chèn vào. Cookie HttpOnly thì mã trang hoàn toàn không đọc được.
  • Thiếu Secure và HttpOnly. Hai cờ này rẻ nhưng chặn được các lỗ hổng phổ biến.
  • Cho rằng banner là đủ. Một banner mà vẫn tải phân tích trước khi ai bấm "Chấp nhận" là không làm đúng việc của nó.
  • Quên đăng xuất. Đăng xuất nên xóa cookie và kết thúc phiên trên máy chủ, để một cookie đã sao chép không còn hoạt động.
  • "Nếu tôi không dùng cookie thì quy định về quyền riêng tư không áp dụng." Các quy định như GDPR bao phủ dữ liệu cá nhân ở bất cứ đâu nó được lưu — kể cả local storage, dấu vân tay thiết bị và log máy chủ.

Nên yêu cầu gì từ công cụ AI của bạn

  • "Liệt kê mọi cookie mà app đặt, mục đích của từng cái, thời hạn bao lâu, và có thiết yếu hay không."
  • "Dùng cookie HttpOnly, Secure, SameSite=Lax cho phiên đăng nhập. Đừng đặt token xác thực trong localStorage."
  • "Chỉ giữ một ID phiên ngẫu nhiên trong cookie; lưu dữ liệu phiên trên máy chủ."
  • "Khi đăng xuất, xóa cookie và vô hiệu hóa phiên trên máy chủ."
  • "Đừng tải script phân tích hoặc tiếp thị cho đến khi khách truy cập chấp nhận, và ghi nhớ lựa chọn của họ."
  • "Thêm một mục cookie đơn giản vào chính sách quyền riêng tư khớp với danh sách trên."

Về phần đồng ý, xem cách thêm đồng ý cookie. Về cách cookie gắn với đăng nhập, đọc xác thực là gì.

Cookie trong Mythex

Mythex không cung cấp sẵn đăng nhập cho người dùng của app bạn, nên các cookie mà app đặt đến từ chính mã của nó và các công cụ bạn thêm vào — ví dụ một cookie phiên từ cách xác thực bạn chọn. Hãy yêu cầu agent trong chat liệt kê chúng, siết chặt cài đặt, hoặc thêm banner đồng ý, rồi kiểm tra kết quả trong bản xem trước trực tiếp trước khi xuất bản. Công thức trong tài liệu về thêm đăng nhập cho app là một prompt khởi đầu tốt, và bảo mật cho app bạn xây bàn về việc giữ khóa và bí mật ra khỏi trình duyệt.

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

Cookie trên website là gì?

Cookie là một đoạn văn bản nhỏ mà website yêu cầu trình duyệt lưu lại. Trình duyệt gửi lại đoạn này trong mỗi yêu cầu sau đó tới cùng site, giúp site nhớ những điều như bạn đã đăng nhập chưa hoặc giỏ hàng có gì.

Cookie có nguy hiểm không?

Cookie chỉ là dữ liệu, không phải chương trình, nên nó không thể chạy mã hay lây nhiễm máy tính. Mối lo nằm ở quyền riêng tư, khi cookie của bên thứ ba theo dõi bạn qua nhiều site, và ở bảo mật, khi cookie đăng nhập bị đánh cắp và dùng để giả mạo bạn.

Sự khác nhau giữa cookie bên thứ nhất và bên thứ ba là gì?

Cookie bên thứ nhất do site trên thanh địa chỉ đặt, ví dụ cookie đăng nhập. Cookie bên thứ ba do một tên miền khác được nhúng trong trang đặt, ví dụ mạng quảng cáo, và thường dùng để theo dõi bạn qua nhiều site.

Tôi có cần banner cookie không?

Tùy thuộc vào nơi người dùng của bạn ở và loại cookie bạn dùng. Ở EU và Anh, các cookie không thiết yếu như phân tích hoặc quảng cáo thường cần sự đồng ý trước, trong khi cookie thật sự cần thiết cho dịch vụ, như phiên đăng nhập, thường không cần. Hãy kiểm tra các quy định áp dụng cho bạn.

Sự khác nhau giữa cookie và localStorage là gì?

Cả hai đều lưu dữ liệu trong trình duyệt. Cookie được gửi tự động lên máy chủ trong mọi yêu cầu, phù hợp cho đăng nhập. localStorage nằm lại trong trình duyệt và chỉ được đọc bởi mã của chính trang, phù hợp cho tùy chọn như giao diện sáng/tối.

Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو 简体中文 繁體中文(香港) 繁體中文(台灣)