Lập trình web phải phân biệt được Session và Cookie
Tags: session, cookie, security, webdev
Published: 2024-06-10 00:59:02

## 1. Giới thiệu về Session và Cookie

Trong thế giới web hiện đại, việc quản lý thông tin người dùng giữa các lần truy cập là một yếu tố quan trọng để tạo ra trải nghiệm người dùng mượt mà và cá nhân hóa. Hai công cụ chính để thực hiện điều này là session (phiên làm việc) và cookie (bánh quy). Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về session và cookie, cách chúng hoạt động, và cách sử dụng chúng trong lập trình web.

### Session là gì?

Session là một phiên làm việc tạm thời của người dùng trên website, thường bắt đầu khi người dùng truy cập vào trang web và kết thúc khi họ rời khỏi hoặc sau một khoảng thời gian không hoạt động. Dữ liệu session thường được lưu trữ trên server và gắn liền với một session ID duy nhất.

### Cookie là gì?

Cookie là những đoạn dữ liệu nhỏ được lưu trữ trên máy tính của người dùng bởi trình duyệt web. Cookie có thể chứa thông tin về các trang web mà người dùng đã truy cập, các tùy chọn cá nhân, hoặc thông tin xác thực.


### Sự khác biệt giữa Session và Cookie

- Vị trí lưu trữ: Session lưu trữ dữ liệu trên server, còn Cookie lưu trữ trên máy người dùng.
- Bảo mật: Session bảo mật hơn vì dữ liệu không lưu trữ trên máy người dùng, trong khi cookie dễ bị tấn công và giả mạo nếu không được mã hóa.
- Dung lượng: Cookie có giới hạn dung lượng (thường là 4KB), còn session có thể lưu trữ dữ liệu lớn hơn vì nó được lưu trên server.
- Thời gian sống: Session thường hết hạn sau một khoảng thời gian không hoạt động, còn cookie có thể được thiết lập để tồn tại trong một thời gian dài hoặc đến khi người dùng xóa chúng.


## Cách sử dụng Cookie
### Tạo và đọc Cookie
**1. Tạo Cookie:** Bạn có thể tạo cookie bằng cách sử dụng document.cookie. Để tạo một cookie, bạn cần thiết lập tên, giá trị và các tùy chọn như thời gian hết hạn, đường dẫn (path), miền (domain), và bảo mật (secure). ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343058_code.png)

**2. Đọc Cookie:** Để đọc cookie, bạn cũng sử dụng document.cookie, nhưng cần xử lý chuỗi kết quả để tách các cookie thành các phần tử riêng lẻ. ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343064_code.png)

**3. Xóa Cookie:** Để xóa một cookie, bạn chỉ cần thiết lập thời gian hết hạn của nó về quá khứ. ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343067_code.png)

## Cách sử dụng Session

Session thường được quản lý bởi server và không thể trực tiếp tạo hoặc thao tác bằng JavaScript. Tuy nhiên, bạn có thể sử dụng các API như localStorage và sessionStorage để lưu trữ dữ liệu phiên làm việc phía client.


## Sử dụng sessionStorage

**sessionStorage** lưu trữ dữ liệu trong một phiên duy nhất. Dữ liệu sẽ bị xóa khi tab hoặc trình duyệt đóng.

**1. Lưu trữ dữ liệu:** ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343096_code.png)

**2. Đọc dữ liệu:** ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343099_code.png)

**3. Xóa dữ liệu:** ![Code](https://photo2.tinhte.vn/data/attachment-files/2024/05/8343101_code.png)

## Khi nào nên sử dụng Session và Cookie

- Cookie: Sử dụng khi bạn cần lưu trữ thông tin trong một khoảng thời gian dài, chia sẻ dữ liệu giữa các trang, hoặc cần gửi dữ liệu đến server mỗi lần gửi yêu cầu HTTP.
- sessionStorage: Sử dụng khi bạn cần lưu trữ dữ liệu chỉ trong phiên làm việc hiện tại và không cần dữ liệu này sau khi người dùng đóng tab hoặc trình duyệt.
- localStorage: Sử dụng khi bạn cần lưu trữ dữ liệu lâu dài trên client mà không phụ thuộc vào phiên làm việc.

## Kết luận

Việc sử dụng session và cookie đúng cách trong JavaScript sẽ giúp bạn quản lý thông tin người dùng hiệu quả, cải thiện trải nghiệm người dùng và tăng cường tính cá nhân hóa của website. Hiểu rõ cách hoạt động và khi nào nên sử dụng từng công cụ này sẽ giúp bạn xây dựng các ứng dụng web mạnh mẽ và bảo mật hơn.