I. Tóm tắt:
Cookie:
- Cookie chỉ được lưu trữ dưới dạng string
- Nó được lưu ở client side
- Kích thước của mỗi cookie là 40, và bị giới hạn số cookie sử dụng là 20
- Cookies có thể dissable.
- Nó không an toàn bảo mật.
- Có 2 loại cookie: liên tục và không liên tục.
2. Session
- Session có thể lưu bất kỳ dữ liệu nào bởi vì values của chúng là object
- Nó được lưu ở server side
- Nó được xem bảo mật an toàn vì nó được lưu với file dưới mã hóa nhị phân và có thể giải mã ở sever
- Không giới hạn quy mô và số session trong một ứng dụng
- Chúng ta không thể disable session và cũng có thể sử dụng session mà không có cookie
- Nhược điểm của chúng là nếu ta sử dụng quá nhiều session hay dung lượng lớn nó sẽ gây cho server "nặng"
- Session có thể không liên tục và có giới hạn thời gian
3.Cache:
- Cache thường dùng để lưu video,hình ảnh, web thành các bit vào ổ cứng máy tính.
II. Tìm hiểu chi tiết:
1. Session:
- Đúng như tên gọi của nó, session là dùng để lưu trữ thông tin phiên làm việc. Nói cách khác, cách giao tiếp giữa client to server.Session bắt đầu khi nào ?
- Nó bắt đầu khi client send request tới server, nó tồn tại xuyên suốt từ trang này đến trang khi.
- Nó chỉ mất đi khi hết thời gian timeout, hoặc close application.
- Mỗi session đều có định danh là SES-SIONID. Vậy để hiểu nhau thì nó sẽ tạo ra cookie lưu ở browser và session id tương ứng sẽ được lưu ở server.
- Giá trị của session thì được lưu trong một tệp tin trong máy chủ server.
- Giá trị thường lưu vào session là: thông tin đăng nhập, giỏ hàng,...
2. Cookie:
- Cũng giống như session, nó dùng để lưu thông tin tạm thời.- Tệp tin cookie được tạo ra ở server và sent xuống browser và được lưu trữ ở browser.
- Khi access vào application thì nó sẽ send cookie tới server để cập nhật hoạt động trước đó.
- Chú ý là không được bao giờ lưu thông tin quan trọng vào cookie, vì nó dễ dang chỉ sửa và có nguy hiểm hơn là dựa vào đó attack application của mình.
- Giá trị thường lưu là: thao tác người dùng, tần suất ghé thăm, thời gian truy cập, token để authentication... Tất cả thông tin được lưu mang tính tạm thời và được lưu trong 1 khoảng thời gian ngắn.
- Nó sẽ được giữ và không bị mất khi đóng browser, ngoài trừ khi set "expiress: N/A". Mặt khác, chúng ta có thể sex expiress đế nó từ xóa khi hết timeout.
- Note:
+ Limited size: 4Kb.
+ Thường cho phép lưu authenticate expiress: 3-4 months, cho phép lưu trữ thông tin để khi cần dăng nhập cho các lần sau.
+ Nếu cookie dùng để set authenticate thì nên set httpOnly: true. Nghĩa là không cho phép đọc cookie từ js nên tránh được script.
+ Tuyệt đối cấm lưu password chưa được mã hóa mà nên dùng token-based authentication.
3. Cache:
- Đây là bộ nhớ đệm, được lưu trữ tạm thời trong máy tính.
- Giá trị thường lưu là: tài liệu web, hình ảnh, video, html,... để giảm tải băng thông, tăng tốc độ load, truy cập vào web.
- Bộ nhớ cache nó sẽ tải các bản sao các bit của web và lưu vào ổ cứng nên khi truy cập vào nó chỉ việc tải các bit có sẵn ở máy.
4.localStorage:
- Nó như một table excell trong browser, chỉ có 2 trường: key và values.
- Nó lưu ở browser cho đến khi nào chính tay chúng ta xóa đi.
- Giá trị thường lưu là: ngôn ngữ, theme, danh mục sản phẩm, giao diện dashboard, layout, ...
5. SessionStorage:
- Gần giống với session storage- Nó sẽ mất đi khi chúng ta close tab, close browser,..
- Nó dễ dàng được đọc bởi js, nên dễ dàng bị đánh cắp bằng cross-site scriting (XSS).
- Tuyệt đối nghiêm cấm lưu thông tin nhạy cảm: username, password, tokenID, email người dùng cho cả localStorage và sessionStorage.
- Note: sessionStorage và localStorage nếu sử dụng nhiều nó không ảnh hưởng đến hiệu suất của web nhưng 1 phần làm trình duyệt nặng thêm.
+ Khi 1 browser mà mở 2 tab trở lên thì sessionStorage không truy xuất thông tin được cho nhau, còn localStorage thì ngược lại.
+ Chỉ được lưu ở trình duyệt chứ không gởi được lên server, nó ngược với cookie.
+ Bù lại dung lượng lưu trữ sẽ cao hơn rất nhiều so với cookie