- vừa được xem lúc

Session, cookie và ứng dụng vào bài toán login

0 0 199

Người đăng: Phương Thảo Nguyễn

Theo Viblo Asia

Trong lập trình web, Session và Cookie là 2 khái niệm vô cùng quan trọng, được ứng dụng ở hầu hết các website. Bài viết này của mình sẽ giúp mọi người hiểu rõ hơn về 2 khái niệm này cũng như cách áp dụng trong bài toán thực tế.

1. Session

Khái niệm

  • hay còn gọi là một phiên làm việc

  • Nó là một biến, lưu dữ liệu dưới dạng key, value, lưu các thông tin phiên làm việc của người dùng (tên, id, giỏ hàng ...). Session cho phép bạn lưu trữ dữ liệu trên server, độc lập hoàn toàn với client, vì vậy dữ liệu sẽ an toàn và đáng tin cậy hơn rất nhiều

  • Nếu như với các biến thông thường, khi trang web bất kỳ bắt đầu thực thi, biến đó sẽ được cấp phát bộ nhớ, lưu giá trị và thu hồi vùng nhớ sau khi trang kết thúc. thì session là cách đơn giản để lưu trữ 1 biến và khiến biến đó có thể tồn tại từ trang này sang trang khác. Và nó chỉ mất đi khi người dùng tắt trình duyệt

Nguyên tắc hoạt động

  • Một session bắt đầu khi client gửi request đến server, nó tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng và chỉ kết thúc khi hết thời gian timeout hoặc khi bạn đóng ứng dụng

  • Session khi sinh ra được lưu trên 1 file có tên dài dòng, khó đoán và được tạo ngẫu nhiên là session id trên máy chủ, và đồng thời ở máy client cũng có 1 cookie sinh ra có nội dung (hay giá trị) đúng như session id (để có thể so khớp session nào là của client nào).

Nơi lưu trữ

  • Giá trị của những session được lưu trên một tập tin trên máy chủ

  • Ví dụ khi bạn đăng nhập vào một trang web và đăng nhập với tài khoản đã đăng ký trước đó. Server sau khi xác thực được thông tin bạn cung cấp là đúng thì nó sẽ sinh ra một tập tin chứa dữ liệu cần lưu trữ của người dùng.

  • Có thể tùy ý quyết định xem nên lưu trữ những thông tin nào vào Session. nếu bạn dùng session một cách vô tội vạ thì sẽ khiến cho máy chủ phải lưu rất nhiều, đặc biệt nếu ứng dụng có hàng triệu người dùng, thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session ví dụ như số lượng sản phẩm người dùng đã thêm vào giỏ nhưng chưa mua, hay những nhật xét đang được viết và lưu dưới dạng nháp nhưng chưa gửi đi

2. Cookie

Khái niệm

  • Cũng là 1 cách để lưu trữ những thông tin tạm thời, được lưu dữ liệu dưới dạng key - value, có thời gian tồn tại (Do phía nhà phát triển quy định). Tệp tin cookie sẽ được truyền từ server tới browser và được lưu trữ trên máy tính của người dùng khi người dùng truy cập vào ứng dụng. Mỗi khi người dùng tải ứng dụng, trình duyệt sẽ gửi cookie để thông báo cho ứng dụng về hoạt động trước đó của bạn.

  • Cookie có thể sửa đổi và đánh cắp, thấp chí có thể lợi dụng điều này để tấn công website của bạn vì vậy đừng bao giờ lưu trữ những thông tin quan trọng, yêu cầu tính bảo mật cao vào cookie.

Nguyên tắc hoạt động

Bước 1: Người dùng truy cập vào trang web lần đầu tiên, header mà trình duyệt gửi lên sẽ có dạng sau:

GET /index.html HTTP/1.1
Host: www.example.org

Bước 2: Server không tìm thấy cookie trên request người dùng, chính vì vậy nó sẽ response cookie bằng cách gửi lại header như sau:

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
Set-Cookie: status=active; Max-Age: 300
Set-Cookie: name=tien; Expires=Wed, 09 Jun 2021 10:18:14 GMT; Max-Age: 300

Bước 3: Trình duyệt sẽ lưu lại giá trị của cookie dựa trên header của server trả về.

Nơi lưu trữ

biến cookie lưu trên những tập tin do server gửi tới, các tập tin được lưu trữ trên thư mục trình duyệt hoặc thư mục dữ liệu chương trình của máy tính người dùng.

3. Ứng dụng trong bài toán login

Khi user login thì server sẽ sinh ra session, lưu ở server ( trong memory của ram hoặc save file, tuỳ). Đồng thời server sẽ set header trên response trả về client, mục đích của header này là lưu cookie ở phía client. Trong cookie sẽ có session_id tương ứng với session ở server. Nhờ đó mà server biết được ai thực hiện các request ở lần tiếp theo.

  • Trường hợp 1: User ko check vào remember me thì khi server set header sẽ KHÔNG bao gồm expired date cho cookie. Khi browser nhận dc lệnh tạo cookie mà ko có expired date, thì nó hiểu đây là "session cookie" - đặc điểm của loại cookie này là khi user tắt browser thì nó xoá cookie này, lúc đó user phải đăng nhập lại.

  • Trường hợp 2: User check vào remember me thì server khi set header SẼ BAO GỒM expired date ( vd 1 năm sau) thi khi user tắt browser cookie này vẫn còn. Khi cookie còn hạn thì user còn đăng nhập hoài.

Chú ý: Session_id là định danh (tên) được đặt cho file lưu trữ khi session được sinh ra, là một tên dài dòng, khó đoán và được tạo ngẫu nhiên.

4. Kết luận

Trên đây mình đã giới thiệu cơ bản về khái niệm, nguyên tắc hoạt động, nơi lưu trữ của session cookie và ứng dụng của Session và Cookies trong bài toán login. Mong các bạn có cái nhìn tổng quát và nắm bắt sơ lược về nó.

Cảm ơn các bạn đã theo dõi bài viết.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Session, Cookie và Cache, bạn đã thực sự hiểu chúng??

Session, Cookie, Cache có lẽ đây chính là 3 khái niệm được nhắc đến thường xuyên đối với các lập trình viên. Nào chúng ta cùng tìm hiểu các khái niệm này nhé. Session. Một session hay còn gọi là một phiên làm việc.

0 0 44

- vừa được xem lúc

What Is Session Fixation?

Session Fixation là một kỹ thuật tấn công web. Kẻ tấn công lừa người dùng sử dụng session ID đặc biệt.

0 0 33

- vừa được xem lúc

Local Storage, Session Storage và Cookie

Sự khác nhau và cách sử dụng Local Storage, Session Storage và Cookie. Bạn bị lẫn lộn giữa session storage, local storage và cookies.

0 0 42

- vừa được xem lúc

Sự khác biệt giữa xác thực dựa trên session và token

Giới thiệu nhanh về HTTP. HTTP là giao thức cơ bản được World Wide Web sử dụng và giao thức này xác định cách thức thông báo được định dạng và truyền đi cũng như các hành động mà server và trình duyệt

0 0 242

- vừa được xem lúc

Cách triển khai RefreshToken và FreshToken P1: Đừng lưu tất cả phiên của người dùng

Bài viết có có nội dung cấm, chỉ đọc nếu bạn muốn logout jwt . . . Dùng JWT đi thời nào rồi còn dùng session nữa ba.

0 0 38

- vừa được xem lúc

Developer Interview Series (3) Token (jwt) sinh ra thay cho Session với tình huống nào??Gợi ý 3 cách

Video được đăng tại channel Tips Javascript

0 0 13