+2

Cookie, Cache và Session

Cookie là gì?

Cookie là 1 đoạn dữ liệu được truyền đến browser từ server, đoạn dữ liệu này sẽ được browser lưu trữ (trong memory hoặc trên đĩa) và sẽ gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server. Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ thời điểm lần cuối bạn ghé thăm website, đánh dấu bạn đã login hay chưa, v.v...

Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau (cho dù cùng host trên 1 server) sẽ có 2 cookie khác nhau gởi tới browser. Ngoài ra, mỗi browser quản lý và lưu trữ cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau.

Cookie hoạt động như thế nào?

Khi bạn ghé thăm một site có thiết lập Cookie, các câu lệnh bên trong trang web này cho phép trình duyệt của bạn liên hệ với server của site. Server này gửi thông tin ngược lại cho trình duyệt và thông tin đó được lưu vào một nơi đặc biệt trên đĩa cứng của bạn. Các trình duyệt khác nhau sẽ lưu Cookie ở những nơi khác nhau. Netscape Navigator duy trì một tập tin có tên Cookie.txt chứa tất cả những Cookie từ bất cứ site nào có tạo ra Cookie. Trên một máy tính cá nhân chạy Windows, Internet Explorer lưu các Cookie của nó trong thư mục C:\windows\ Cookies. Khi bạn quay trở lại site, server của site hỏi trình duyệt của bạn để tìm Cookie mà trước kia nó đã tạo và trình duyệt đáp lại bằng cách gửi thông tin của Cookie cho server

Có hai loại Cookie: “session Cookie” biến mất sau khi bạn đóng cửa sổ trình duyệt (chấm dứt phiên kết nối) và thường được các “shopping cart” sử dụng tại các cửa hàng trực tuyến nhằm theo dõi những món hàng bạn muốn mua. “Persist-ent Cookie” được thiếp lập bởi các site tin tức, các công ty quảng cáo biểu ngữ, và những site khác muốn nhận ra bạn khi bạn quay trở lại. Những tập tin này vẫn nằm trên đĩa cứng của bạn sau khi bạn rời khỏi site.

Cả hai tập tin Cookie đều chứa địa chỉ Internet (URL) hoặc domain name của site mà bạn đã ghé thăm và một vài đoạn mã chương trình bên trong cho biết những trang nào bạn đã xem qua. “Persistent cookie” còn thêm thông tin lần cuối bạn ghé thăm site và bạn đã ghé thăm bao nhiêu lần. Chúng thường chứa một đọan mã chương trình, nó cũng chính là định danh riêng của bạn, cho phép một site biết là trước đây bạn đã từng ghé thăm. Một số Cookie có thể chứa thông tin cá nhân như tên hoặc địa chỉ email, nhưng chỉ khi nào bạn cung cấp những thông tin đó cho web site.

Session là gì?

Là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Session bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có một định danh (ID), 1 session khác nhau sẽ có 2 ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc. Trong 1 session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua, v.v...

Session hoạt động như thế nào?

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) đối với mỗi ngôn ngữ lập trình web sẽ có tên cookie quy định như php là PHPSESSID, jsp là JSESSIONID, …

Các giá trị của biến session sẽ được lưu trong file đó (khác so với các biến thông thường là được lưu trong bộ nhớ server – trong php file nội dung được lưu trong thư mục thiết lập trong file php.ini (tham số session.save_path)).

Thông thường session được ứng dụng vào việc quản lý đăng nhập, đăng xuất của thành viên. Với những tác vụ cần xác nhận là thành viên mới sử dụng được, chúng ta cần yêu cầu thành viên đăng nhập vào hệ thống. Nhưng nếu chỉ dùng biến thông thường thì mỗi lần cần thực hiện lại phải đăng nhập vào. Trong khi ấy, nều dùng session thì sau khi đăng nhập, 1 biến session được tạo ra (ví dụ là user_id), thì biến này sẽ tồn tại từ trang này sang trang khác, như thế khi cần thực hiện tác vụ khác cũng cần đăng nhập, ta chỉ cần kiểm tra xem có tồn tại biến user_id này hay chưa là đủ. Nếu tồn tại rồi thì thôi, chưa tồn tại thì đăng nhập.

Cache web là gì?

Bộ nhớ cache web (hoặc bộ nhớ cache HTTP) hay còn gọi là Web caching là một công nghệ thông tin để lưu trữ tạm thời (lưu trữ) các tài liệu web, chẳng hạn như các trang và hình ảnh HTML, để giảm tải băng thông, tải máy chủ và tụt hậu. Một hệ thống lưu trữ web lưu trữ bản sao các tài liệu đi qua nó.

Các yêu cầu tiếp theo có thể được thỏa mãn từ bộ nhớ cache nếu đáp ứng các điều kiện nhất định. Hệ thống bộ nhớ cache web có thể tham chiếu đến thiết bị hoặc phần mềm. Ví dụ: khi bạn mở các trang web có hình ảnh và video lớn, có thể mất một thời gian để tải trang web. Trình duyệt web lưu trữ nội dung trang web như hình ảnh, video, âm thanh, vv trên máy tính của bạn. Vì vậy, lần tiếp theo bạn tải cùng một trang web, bạn sẽ thấy nó tải nhanh hơn.

Nội dung cache này được lưu trữ ở đâu?

Chúng được lưu trữ ở nhiều nơi khác nhau. Có thể trên server (hoặc nhiều server), giữa các webserver hoặc giữa các client. Dựa vào nơi lưu trữ, chúng được loại thành 3 loại chính:

  • Browser web: Trình duyệt sẽ phân phối một lượng nhất định đĩa cứng trên máy tính. Dung lượng này dành để lưu trữ những nội dung bạn đã xem. Hình thức này cho phép truy xuất thông tin khá nhanh do dữ liệu web được lấy trực tiếp từ máy tính người dùng thay vì phải tải lại qua đường truyền mạng.

Cache này đặc biệt có ích khi ngườI dùng nhấn vào nút Back hoặc nhấn vào một liên kết đến 1 trang mà họ vừa mớI xem. Ngoài ra, nếu bạn sử dụng cùng các hình ảnh liên kết trong suốt một site, gần như ngay lập tức người dùng sẽ được đáp ứng từ caches của browser.

  • Proxe Cache: Web proxy cache làm việc cùng nguyên tắc với browser cache, nhưng ở phương diện rộng lớn hơn. Proxies đáp ứng hàng trăm hoặc hàng ngàn users cùng một cách thức. Những proxy cache là một dạng của shared cache, nó không chỉ được sử dụng bởi một người, mà nó thường có một lượng lớn users, và bởi vì nó rất tốt cho việc giảm những nguy cơ tiềm ẩn và đường truyền mạng. Đó là lý do các thông tin lướt trên web tiết kiệm được nhiều thời gian

  • Gateway Cache

Gateway cache thường là đóng vai trò trung gian, nhưng thay vì được triển khai bởi nhà quản trị mạng để tiết kiệm băng thông, nó làm cho web site có khả năng mở rộng, đáng tin cậy và tối ưu.

Các yêu cầu có thể chuyển đến gateway caches bởi nhiều phương thức, nhưng điển hình một số tổ chức cân bằng tải được dùng để tạo ra một hay nhiều phương thức cho server đến các clients. Mô hình này thường được triển khai dưới dạng máy chủ 2 lớp. Trong đó, một lớp đóng vai trò làm front end thực hiện xử lý các file tĩnh (html, css…), lớp còn lại đóng vai trò back end xử lý nội dung động (dynamic content).

Phân biệt cookie, cache và session:

Mặc dù cookie, session và bộ nhớ cache là các cách để lưu trữ dữ liệu , nhưng chúng vẫn có sự khác biệt và chúng phục vụ các mục đích khác nhau. Về lưu trữ:

  • Bộ nhớ cache lưu trữ data ở trong máy của khách hàng.
  • Cookie sẽ được lưu trữ tại browser, do browser quản lý và browser sẽ tự động truyền cookie ngược lên server mỗi khi truy cập vào 1 trang web trên server.
  • Dữ liệu lưu trữ trong Session sẽ được lưu website và webserver. Browser chỉ truyền ID của session lên server mỗi khi truy cập vào website trên server.

Ứng dụng:

  • Bộ nhớ cache được sử dụng để làm cho việc tải các trang web nhanh hơn.
  • Cookie được sử dụng lưu trữ thông tin để theo dõi các đặc điểm khác nhau liên quan đến người dùng.
  • Session được sự dụng chủ yếu để quản lý Đăng nhập, Đăng xuất của thành viên

Ví dụ về cache,cookie và session

Một ví dụ nhỏ để phân biệt sự khác biệt giữa bộ nhớ cache và cookie,session. Giả sử bạn truy cập trang web mua sắm để tìm kiếm hoặc mua một đôi giày. Bạn kiểm tra một số đôi giày của thương hiệu khác nhau hoặc mua đôi các sản phẩm vào giỏ hàng. Sau đó, bạn mua hoặc rời khỏi trang web mà không thanh toán. Và bây giờ bạn duyệt qua bất kỳ trang web nào khác, cho dù đó là trang web tin tức hay bất kỳ trang nào khác có phục vụ quảng cáo. Bạn sẽ nhận thấy rằng tất cả các sản phẩm bạn đã tìm kiếm hoặc mua thì các quảng cáo liên quan đến các sản phẩm đó bạn sẽ thấy. Đôi khi nó có thể là sản phẩm khác nhau từ một trang web khác nhau hoặc cùng một sản phẩm từ cùng một trang web. Điều này được thực hiện nhờ sự giúp đỡ của cookie.

Bây giờ chúng ta hãy kiểm tra vai trò của các cookie trong đó. Cookie để lưu trữ thông tin về lịch sử duyệt web của bạn. Trong trường hợp này, nó sẽ lưu trữ trang web bạn đã duyệt và loại sản phẩm bạn tìm kiếm. Thông tin đó hiện giúp các nhà quảng cáo hiển thị cho bạn cùng một sản phẩm hoặc sản phẩm có liên quan trong quảng cáo của họ.

Vai trò của bộ nhớ cache trong ví dụ này là để lưu trữ hình ảnh của các sản phẩm mà bạn đã duyệt và các nguồn web khác. Bây giờ, khi bạn truy cập lại trang web đó hoặc sản phẩm trang hoặc hình ảnh sẽ tải nhanh hơn.

Với Session thì nó thường dùng để thực hiện các chức năng như đăng nhập,lưu thông tin của giỏ hàng mua sắm trên các trang web.

Testing Cookie và Session

1. Các test case kiểm thử cookie cơ bản:

  • Disabling cookies: Vô hiệu hoá tất cả cookie và cố gắng sử dụng các chức năng chính của trang web
  • Corrupting cookies: Chỉnh sửa cookie bằng tay qua notepad và thay đổi các thông số với một giá trị ngẫu nhiên
  • Cookies encryption: Kiểm tra xem liệu rằng thông tin nhạy cảm như mật khẩu và tên người dùng có được mã hóa trước khi nó được gửi đến máy tính của user không
  • Cookie testing with multiple browser: Kiểm tra việc ghi cookie có đúng cách trên các trình duyệt khác nhau không?
  • Selectively rejecting cookies: Xóa tất cả cookie của trang web và xem trang web phản ứng như thế nào
  • Access to cookies: Cookies được ghi bởi một trang web mà người khác không có quyền truy cập
  • No overuse of cookies: Nếu ứng dụng đang thử nghiệm là một trang web công cộng, không nên quá lạm dụng cookie
  • Testing with different setting: Kiểm tra xem trang web có hoạt động tốt với các cài đặt cookie khác nhau
  • Categorize cookies separately: Kiểm tra xem cookies có được lưu giữ trong cùng một loại virus, spam hoặc spyware hay không

2. Các test case kiểm thử session cơ bản:

  • Login session:
    • Kiểm tra rằng người dùng có luôn trong trạng thái đã đăng nhập trong khi duyệt các sản phẩm.
    • Kiểm tra khi người dùng không tương tác với trang web trong một thời gian, session có hết hạn sau khoảng thời gian mà spec yêu cầu.
    • Kiểm tra người dùng đã thực sự bị đăng xuất sau khi session time out.
  • Đăng nhập và Đăng xuất:
    • Kiểm tra khi người dùng đã đăng xuất cần chắc chắn rằng họ không thể truy cập vào trang tài khoản người dùng nữa.
    • Kiểm tra rằng hệ thống sẽ không yêu cầu user đăng nhập lại khi vào bất cứ trang nào khi người dùng đã login.
    • Kiểm tra session cho mỗi địa chỉ / tài khoản đăng nhập được server lưu trữ đúng và giới hạn truy cập cho mỗi tài khoản ở cùng 1 thời điểm.

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.