1. Cookies là gì?
Cookies là các tệp dữ liệu nhỏ mà server gửi đến trình duyệt của người dùng và được lưu trữ trên máy tính. Cookies giúp lưu trữ thông tin về phiên làm việc (session), thói quen nhằm mục đích cải thiện trải nghiệm hoặc theo dõi và phân tích hành vi người dùng.
Cookies thường được lưu trữ trong thư mục của trình duyệt, nên nó phụ thuộc vào hệ điều hành và trình duyệt mà bạn đang sử dụng, ví dụ với Google Chrome:
- Trên Windows:
C:\Users\[Your Username]\AppData\Local\Google\Chrome\User Data\Default\Cookies
- Trên MacOS:
/Users/[Your Username]/Library/Application Support/Google/Chrome/Default/Cookies
- Trên Linux:
/home/[Your Username]/.config/google-chrome/Default/Cookies
2. Cookies được sử dụng như thế nào?
2.1 Quản lý phiên làm việc và xác thực
Lưu trữ token xác thực hoặc session ID để server có thể xác định người dùng trong các yêu cầu HTTP. Điều này giúp duy trì trạng thái đăng nhập của người dùng trên toàn bộ trang web.Sau khi người dùng đăng nhập, một JWT (JSON Web Token) có thể được lưu trữ trong cookie để xác thực các yêu cầu tiếp theo đến server mà không cần người dùng phải đăng nhập lại.
2.2 Lưu trữ các tùy chọn của người dùng
Cookies có thể lưu trữ các tuỳ chọn (preference) của bạn trên một trang web, như ngôn ngữ bạn sử dụng, kiểu giao diện (dark theme, light theme), hoặc các cài đặt cá nhân khác. Điều này giúp trang web hiển thị đúng theo những gì bạn đã chọn mỗi khi bạn truy cập lại.
2.3 Theo dõi và Phân tích hành vi người dùng
Cookies thường được sử dụng để theo dõi cách bạn sử dụng một trang web, thu thập và phân tích dữ liệu về hành vi của bạn. Ví dụ: Trên một trang thương mại điện tử, cookies có thể lưu trữ thông tin về các sản phẩm bạn đã xem gần đây. Khi bạn quay lại trang, phần "sản phẩm đã xem gần đây" sẽ hiển thị những sản phẩm đó, giúp bạn dễ dàng tiếp tục mua sắm mà không cần phải tìm lại từ đầu, hoặc gợi ý các sản phẩm tương tự. Điều này không chỉ cải thiện trải nghiệm người dùng mà còn giúp trang web hiểu rõ hơn về sở thích của bạn, ngay cả khi bạn không đăng nhập.
3. Đặc điểm của Cookies
- Dung lượng lưu trữ nhỏ: Cookies có thể chứa một lượng dữ liệu nhỏ, thường chỉ khoảng 4 KB cho mỗi tên miền. Ví dụ, nếu một trang web muốn lưu thông tin về các mục bạn đã thêm vào giỏ hàng, nó sẽ chỉ lưu trữ được một số thông tin hạn chế trong cookie.
- Cookies có thời hạn: Cookies có thể được thiết lập để hết hạn sau một thời gian nhất định, có hai loại: hết hạn ngay khi bạn đóng trình duyệt hoặc tồn tại ngay cả khi bạn đã đóng trình duyệt và sẽ hết hạn sau một khoảng thời gian cụ thể (Ví dụ: 30 ngày).
- Gửi kèm với các yêu cầu HTTP: Mỗi khi bạn truy cập một trang web, cookies được tự động gửi kèm với các yêu cầu HTTP đến máy chủ của trang web đó. Điều này có thể làm tăng kích thước yêu cầu và ảnh hưởng đến tốc độ tải trang. Ví dụ, nếu bạn có một cookie lưu trữ thông tin giỏ hàng, cookie này sẽ được gửi kèm mỗi khi bạn chuyển qua các trang khác nhau trong website.
- Có thể được truy cập bởi Máy chủ: Cookies có thể được đọc và ghi bởi cả trình duyệt (client) và máy chủ của website (server). Ví dụ, khi bạn đăng nhập vào một trang web, máy chủ có thể tạo ra một cookie để theo dõi phiên đăng nhập của bạn, và trình duyệt sẽ gửi cookie này kèm theo mỗi yêu cầu để xác nhận bạn vẫn đang đăng nhập.
- Giới hạn số lượng Cookies: Một trình duyệt thường giới hạn số lượng cookies mà một trang web có thể lưu trữ, thường là khoảng 50 cookies.
- Giới hạn tổng dung lượng: Trình duyệt cũng có giới hạn tổng dung lượng cho tất cả các cookies được lưu trữ. Khi vượt quá giới hạn này, các cookies cũ hơn sẽ bị xóa để nhường chỗ cho các cookies mới. Tổng dung lượng này thường là khoảng 5 MB.
4. Phân loại Cookies
4.1 Cookie vĩnh viễn (Persistent cookies)
Loại cookie này được lưu trên máy tính người dùng ngay cả khi họ đã đóng trình duyệt. Nó được dùng để ghi nhớ người dùng giữa các phiên làm việc, giúp trang web nhớ thông tin đăng nhập của bạn cho lần truy cập tiếp theo.
Name: remember_user_token
Value: abc123
Domain: example.com
Path: /
Expires/Max-Age: 365 days (hoặc một ngày cụ thể)
4.2 Session cookies
Chỉ tồn tại trong phiên làm việc của trình duyệt và bị xóa khi trình duyệt đóng. Nó thường dùng để lưu trữ thông tin tạm thời như giỏ hàng, tuỳ chọn lọc hoặc sắp xếp bài viết theo ngày đăng.
Name: cart_items
Value: ["product123", "product456", "product789"]
Domain: exampleecommerce.com
Path: /
Expires/Max-Age: Session (không có ngày hết hạn)
5. Cấu trúc của một Cookie
Cấu trúc của cookies trong một website thường bao gồm các thông tin như sau:
- Tên (Name): Đây là tên của cookie, dùng để định danh cookie trên trình duyệt. Tên này phải là duy nhất trong phạm vi tên miền.Ví dụ:
session_id
,user_preferences
,cart_items
. - Giá trị (Value): Đây là dữ liệu mà cookie lưu trữ. Giá trị này có thể là một chuỗi văn bản, JSON, hoặc bất kỳ định dạng nào khác. Tuy nhiên, dung lượng của toàn bộ cookie (bao gồm tên và giá trị) thường bị giới hạn ở mức 4 KB. Ví dụ:
4f9d8a1c1e324d12f9a8b5e3c1
,{"theme": "dark", "language": "en"}
. - Tên miền (Domain): Xác định tên miền gắn liền với cookie, cookie chỉ có thể được gửi trong các yêu cầu HTTP đến tên miền đó. Nếu không được chỉ định, cookie sẽ mặc định sử dụng tên miền của trang web đang tạo cookie. Ví dụ:
example.com
,.example.com
(dấu chấm phía trước biểu thị rằng cookie này áp dụng cho tất cả các subdomain của example.com). - Đường dẫn (Path): Xác định đường dẫn URL mà cookie có hiệu lực. Nếu không chỉ định, cookie sẽ có hiệu lực cho toàn bộ trang web (tức là đường dẫn
/
). Ví dụ:/
,/user/account
,/shop/cart
. - Ngày hết hạn hoặc Thời gian tồn tại (Expires/Max-Age): Xác định thời điểm hoặc khoảng thời gian mà cookie sẽ hết hạn. Trong đó Expires là ngày hết hạn cụ thể (theo UTC) và Cookie sẽ bị xóa sau ngày này, Max-Age là khoảng thời gian tính từ thời điểm hiện tại, bằng giây. Ví dụ,
Max-Age=3600
có nghĩa là cookie sẽ hết hạn sau 1 giờ. - Bảo mật (Secure/HttpOnly/SameSite): Secure: Khi tích chọn, cookie chỉ được gửi qua kết nối HTTPS, giúp bảo vệ cookie khỏi bị đánh cắp qua các kết nối không an toàn. HttpOnly: Cookie không thể truy cập được thông qua JavaScript, giúp bảo vệ cookie khỏi các cuộc tấn công XSS (Cross-Site Scripting). SameSite: Xác định cách cookie được gửi cùng với các yêu cầu từ các trang web khác (cross-site), ví dụ
SameSite=Strict
(cookie chỉ được gửi với các yêu cầu cùng tên miền).
Bên dưới là cookies của Tiki bao gồm các trường (cột) mà mình đã giải thích ở bên trên, mỗi dòng tương ứng với 1 cookie, tổ hợp các dòng này tạo nên 1 file cookies tên tiki.vn
.
6. Hướng dẫn xem Cookies trên trình duyệt
6.1 Google Chrome
- Bước 1: Chọn trang web mà bạn muốn xem
- Bước 2: Nhấp chuột phải chọn
Inspect
-> chọnApplication
- Bước 3: Trong phần
Storage
->Cookies
bạn sẽ thấy file Cookies cần tìm
6.2 Safari
- Bước 1: Chọn trang web mà bạn muốn xem
- Bước 2: Nhấp chuột phải chọn
Inspect Element
- Bước 3: Trong phần
Storage
->Cookies
bạn sẽ thấy file Cookies cần tìm
7. Kết luận
Cookies là một phần không thể thiếu của trải nghiệm duyệt web hiện nay, dù chỉ là các tệp dữ liệu nhỏ, cookies có khả năng cá nhân hóa trải nghiệm người dùng, lưu trữ các tùy chọn và thông tin đăng nhập, theo dõi hành vi duyệt web, và thậm chí cung cấp nội dung và quảng cáo phù hợp.
Tuy nhiên, việc sử dụng cookies cũng đặt ra các vấn đề về quyền riêng tư và bảo mật, khiến chúng ta phải cân nhắc kỹ lưỡng về cách chúng được triển khai và quản lý. Hiểu rõ về cách thức hoạt động của cookies sẽ giúp bạn kiểm soát tốt hơn thông tin cá nhân của mình khi lướt web, đồng thời cũng giúp các nhà phát triển web xây dựng các ứng dụng an toàn và hiệu quả hơn.
Tham khảo các bài viết khác tại Blog 200Lab:
Bài viết liên quan
Apple lên tiếng về AI: Chúng ta có đang đánh giá quá cao Trí tuệ của nó?
Nov 21, 2024 • 8 min read
Whisper AI là gì? Công cụ chuyển giọng nói thành văn bản của Open AI
Oct 17, 2024 • 8 min read
Cursor AI là gì? Hướng dẫn Sử dụng Cursor AI cơ bản
Sep 16, 2024 • 13 min read
IDE là gì? Những công cụ IDE phổ biến nhất hiện nay
Aug 22, 2024 • 11 min read
SDLC là gì? Các mô hình Software Development Life Cycle phổ biến
Jul 13, 2024 • 27 min read
System Design là gì? Tại sao Thiết kế hệ thống lại quan trọng với Developer?
Jun 17, 2024 • 10 min read