Chào các bạn, nay thì mình xin tóm tắt cơ bản dễ hiểu đơn giản nhất về Cookie, Local Storage và Session Storage Trong trình Duyệt. giúp anh em chúng ta có thêm kiến thức khi đi phỏng vấn nhé.
Cookie, Local Storage và Session Storage Trong trình Duyệt |
A. Cookie, Local Storage và Session Storage
1. Giới Thiệu Chung
Cookie, Local Storage và Session Storage là những phương thức lưu trữ dữ liệu trên trình duyệt web và lưu trữ thông tin cần thiết cho các trang web hoạt động hiệu quả. Mỗi phương thức có những đặc điểm, ưu điểm và nhược điểm riêng, phù hợp cho các trường hợp sử dụng khác nhau. Các dữ liệu nó có thể lưu ví dụ như ( đăng nhập của người dùng, các hành vi hoạt động của người dùng, thông tin đăng nhập và trạng thái của trình duyệt .... )
2. Đặc Điểm
Đặc điểm | Cookie | Local Storage | Session Storage |
---|---|---|---|
Lưu trữ | Trên máy chủ và máy khách | Chỉ trên máy khách | Chỉ trên máy khách |
Phạm vi | Giữa các trang web, phiên truy cập | Chỉ trong một trang web | Chỉ trong một phiên truy cập |
Khả năng truy cập | Bởi máy chủ và máy khách | Chỉ bởi máy khách | Chỉ bởi máy khách |
Dung lượng | 4KB | 5MB | 5MB |
Thời gian tồn tại | Tùy chỉnh | Vô hạn | Xóa khi đóng trình duyệt |
Mục đích | Lưu trữ thông tin đăng nhập, cài đặt người dùng, theo dõi hành vi người dùng | Lưu trữ dữ liệu ứng dụng web, cài đặt cục bộ | Lưu trữ dữ liệu tạm thời cho một phiên truy cập |
3. Sự khác biệt:
- Lưu trữ: Cookie được lưu trữ trên cả máy chủ và máy khách, cho phép chia sẻ thông tin giữa các trang web. Local Storage và Session Storage chỉ được lưu trữ trên máy khách, không chia sẻ thông tin giữa các trang web.
- Phạm vi: Cookie có thể được sử dụng trên nhiều trang web, Local Storage và Session Storage chỉ được sử dụng trong một trang web cụ thể.
- Khả năng truy cập: Cookie có thể được truy cập bởi cả máy chủ và máy khách, Local Storage và Session Storage chỉ được truy cập bởi máy khách.
- Dung lượng: Cookie có dung lượng lưu trữ nhỏ hơn Local Storage và Session Storage.
- Thời gian tồn tại: Cookie có thể được tùy chỉnh thời gian tồn tại, Local Storage lưu trữ dữ liệu vô hạn, Session Storage xóa dữ liệu khi đóng trình duyệt.
- Mục đích: Cookie thường được sử dụng để lưu trữ thông tin đăng nhập, cài đặt người dùng, theo dõi hành vi người dùng. Local Storage và Session Storage thường được sử dụng để lưu trữ dữ liệu ứng dụng web, cài đặt cục bộ, dữ liệu tạm thời cho một phiên truy cập
4. Giống nhau:
- Cả ba phương thức đều lưu trữ dữ liệu dưới dạng key-value.
- Dữ liệu được lưu trữ trên trình duyệt web của người dùng.
- Dễ dàng sử dụng và truy cập bằng JavaScript.
5. Giới hạn bảo mật:
- Cookie có thể bị đánh cắp bởi các trang web khác nếu không được bảo mật đúng cách.
- Local Storage và Session Storage có thể bị truy cập bởi các trang web độc hại nếu mã JavaScript bị khai thác.
- Cần sử dụng các biện pháp bảo mật thích hợp để bảo vệ dữ liệu được lưu trữ.
6. Lựa chọn phương thức phù hợp:
- Cookie: Lưu trữ nhỏ, có thời gian sống có thể cấu hình thời gian tồn tại của cookie, sử dụng cho xác thực và theo dõi hành vi của con người, duy trì trạng thái đăng nhập các website.
- Local Storage: Lưu trữ lâu dài, dung lượng lớn, thời gian tồn tại mãi mãi trừ khi chỉ bị xóa bằng JavaScript, hoặc xóa bộ nhớ trình duyệt, hoặc xóa bằng localStorage API. sử dụng cho cài đặt và lịch sử.
- Session Storage: Lưu trữ trong phiên làm việc, dữ liệu tồn tại trong phiên làm việc, sử dụng cho lưu trữ tạm thời.
B. Đi sâu vào Cookie, Local Storage và Session Storage
localStorage là gì ?
Tất cả các trình duyệt hiện đại đều hỗ trợ chức năng này. LocalStorage giúp website lưu trữ dữ liệu vĩnh viễn trên trình duyệt. Trừ khi người dùng xóa cache hoặc làm các hành động như cài lại trình duyệt.
Về cơ bản, nó như một table trong Excel, nhưng chỉ có hai trường là: key và value. Một số ví dụ dùng localStorage như một số user preferences: ngôn ngữ, theme, danh mục sản phẩm được chọn, giao diện tuỳ chỉnh, dashboard, layout, …
Có rất nhiều giá trị trong một ứng dụng website nên lưu trong LocalStorage thay vì SessionStorage.
Tuy nhiên, bạn nên lưu ý là LocalStorage không bảo mật. Bạn có thể dễ dàng lưu dữ liệu, lấy dữ liệu và chỉnh sửa dữ liệu từ LocalStorage.
Ngoài ra, điểm yếu của LocalStorage là nó chỉ lưu đơn thuần một String. Các kiểu dữ liệu phức tạp đều không phù hợp để lưu trong LocalStorage.
sessionStorge là gì ?
sessionStorage khá giống với localStorage. Vì chúng đều thuộc về web storage API.
- Lưu data theo cặp key/value ở local browser và phía server không access được các data này.
- Có cùng APIs: setItem, getItem, removeItem, clear.
- Cho phép lưu trữ nhiều data(khoảng 10MB).
Một khuyết điểm của cả localStorage và sessionStorage là có thể bị đọc bởi Javascript. Do đó dễ bị đánh cắp thông tin thông qua một cross-site scriting. Vì vậy, chúng ta không nên lưu trữ những thông tin nhạy cảm như token ID, password, username, email của người dùng vào localStorage hay sessionStorage.
Khi close tab hay close browser thì data ở localStorage vẫn tồn tại, và chỉ bị mất khi user xoá cache hoặc clear web data. Còn đối với sessionStorage thì data sẽ bị mất ngay khi close tab hoặc close browser.
Cookie là gì ?
Cookies là các tệp được trang web người dùng truy cập tạo ra. Cookie giúp trải nghiệm trực tuyến của bạn dễ dàng hơn bằng cách lưu thông tin duyệt web. Với Cookies, các trang web có thể duy trì trạng thái đăng nhập của bạn, ghi nhớ tùy chọn trang web và cung cấp nội dung phù hợp với vị trí của người dùng. Và bản chất lưu trữ Cookie cũng là một bản ghi đơn giản gồm key, value.Một số điểm nổi bật của cookie đó là:
- localStorage chỉ access được trên browser client; còn cookies thì có thể access được ở browser client và cả phía server (khi tạo một http request thì cookies của browser sẽ được attach vào header Cookie, từ đó phía server có thể parse header này và get được data cookie).
- cookies có thời gian hết hạn expires, sau thời gian này thì cookies sẽ biến mất khỏi browser.
- cookies chỉ cho phép lưu tối đa khoảng 4 KB, vì vậy ta nên sử dụng cookies với mục đích save những loại data simple ví dụ như token cho authentication,...
Cookie thường được dùng để đăng nhập, lưu vài giá trị cơ bản và đơn giản. Cookie không bị giới hạn bởi độ dài dung lượng hay ký tự. Tuy nhiên vì nó chuyển từ Client tới Server và ngược lại theo Header Request. Nên chúng càng nhẹ càng tốt. Trong các cách tăng tốc website thì giảm bớt Cookie là một ý kiến hay ho…
Một số lưu ý khi dùng cookie:
- Nên xác định thời gian expire/max-age. Thông thường chỉ nên cho phép một cookie chứa thông tin để authenticate trong khoảng 3-4 tháng. Để tránh người dùng phải đăng nhập nhiều lần, chúng ta cung cấp một option lưu trữ thông tin để lần sau user không cần đăng nhập nữa.
- Nếu cookie dùng để authenticate nên set httpOnly bằng true. Dùng cờ này để không cho phép đọc được cookie từ Javascript. Tránh được sự tấn công từ bên ngoài bằng thủ thuật scripting.
- Dễ bị đánh cắp thông tin người dùng. Cho nên đừng bao giờ lưu password nguyên gốc của user mà hãy mã hoá nó, hay dùng token-based authentication.
Tóm lại: tôi chọn cookie là an toàn nhất nhé :))))
Design by @KiMiDev
Tags:
cookie