Giai đoạn này, người kiểm tra sẽ kiểm tra xem ứng dụng có hướng dẫn chính xác trình duyệt để không giữ lại dữ liệu nhạy cảm hay không.
Trình duyệt có thể lưu trữ thông tin cho mục đích lưu vào bộ nhớ đệm và lịch sử. Bộ nhớ đệm được sử dụng để cải thiện hiệu suất, do đó thông tin đã hiển thị trước đó không cần phải tải xuống lại.
Các bài viết liên quan:
Cơ chế lịch sử được sử dụng để tạo sự thuận tiện cho người dùng, vì vậy người dùng có thể xem chính xác những gì họ đã thấy tại thời điểm tài nguyên được truy xuất. Nếu thông tin nhạy cảm được hiển thị cho người dùng (chẳng hạn như địa chỉ, chi tiết thẻ tín dụng, Số an sinh xã hội hoặc tên người dùng) thì thông tin này có thể được lưu trữ cho mục đích lưu vào bộ nhớ đệm hoặc lịch sử và do đó có thể truy xuất thông qua kiểm tra bộ nhớ cache của trình duyệt hoặc đơn giản nhấn nút Quay lại của trình duyệt.
Mục tiêu kiểm tra Browser Cache Weaknesses
Xem lại xem ứng dụng có lưu trữ thông tin nhạy cảm ở phía máy khách hay không.
Xem lại nếu quyền truy cập có thể xảy ra mà không có sự cho phép.
Làm thế nào để kiểm tra Browser Cache Weaknesses
Lịch sử trình duyệt
Về mặt kỹ thuật, nút Quay lại là lịch sử chứ không phải bộ đệm (xem Cache trong HTTP: History Lists). Bộ nhớ cache và lịch sử là hai thực thể khác nhau. Tuy nhiên, chúng có chung điểm yếu là đưa ra những thông tin nhạy cảm đã được hiển thị trước đó.
Thử nghiệm đầu tiên và đơn giản nhất bao gồm nhập thông tin nhạy cảm vào ứng dụng và đăng xuất. Sau đó, người kiểm tra nhấp vào nút Quay lại của trình duyệt để kiểm tra xem thông tin nhạy cảm đã hiển thị trước đó có thể được truy cập trong khi chưa được xác thực hay không.
Nếu bằng cách nhấn nút Quay lại, người kiểm tra có thể truy cập các trang trước đó nhưng không truy cập được các trang mới, thì đó không phải là vấn đề xác thực mà là vấn đề lịch sử trình duyệt. Nếu các trang này chứa dữ liệu nhạy cảm, điều đó có nghĩa là ứng dụng đã không cấm trình duyệt lưu trữ dữ liệu đó.
Việc xác thực không nhất thiết phải tham gia vào quá trình thử nghiệm. Ví dụ: khi người dùng nhập địa chỉ email của họ để đăng ký bản tin, thông tin này có thể được truy xuất nếu không được xử lý đúng cách.
Nút Quay lại có thể bị dừng hiển thị dữ liệu nhạy cảm. Điều này có thể được thực hiện bằng cách:
- Cung cấp trang qua HTTPS.
- Setting Cache-Control: must-revalidate
Bộ nhớ cache của trình duyệt
Ở đây người thử nghiệm kiểm tra xem ứng dụng không bị rò rỉ bất kỳ dữ liệu nhạy cảm nào vào bộ nhớ cache của trình duyệt. Để làm điều đó, họ có thể sử dụng proxy (chẳng hạn như OWASP ZAP) và tìm kiếm thông qua các phản hồi của máy chủ thuộc về phiên, kiểm tra xem đối với mọi trang có chứa thông tin nhạy cảm, máy chủ đã hướng dẫn trình duyệt không lưu vào bộ nhớ cache bất kỳ dữ liệu nào. Một lệnh như vậy có thể được phát hành trong tiêu đề phản hồi HTTP với các lệnh sau:
Cache-Control: no-cache, no-store
Expires: 0
Pragma: no-cache
Các chỉ thị này nói chung là mạnh mẽ, mặc dù các cờ bổ sung có thể cần thiết cho tiêu đề Cache-Control để ngăn chặn tốt hơn các tệp được liên kết liên tục trên hệ thống tệp. Bao gồm các:
Cache-Control: must-revalidate, max-age=0, s-maxage=0
HTTP/1.1: Cache-Control: no-cache
HTTP/1.0: Pragma: no-cache Expires: "past date or illegal value (e.g., 0)"
Ví dụ: nếu người kiểm tra đang kiểm tra một ứng dụng thương mại điện tử, họ nên tìm kiếm tất cả các trang có chứa số thẻ tín dụng hoặc một số thông tin tài chính khác và kiểm tra xem tất cả các trang đó có thực thi lệnh no-cache hay không. Nếu họ tìm thấy các trang có chứa thông tin quan trọng nhưng không hướng dẫn trình duyệt không lưu nội dung của họ vào bộ nhớ cache, họ biết rằng thông tin nhạy cảm sẽ được lưu trữ trên đĩa và họ có thể kiểm tra lại điều này đơn giản bằng cách tìm trang trong bộ nhớ cache của trình duyệt .
Vị trí chính xác nơi thông tin đó được lưu trữ phụ thuộc vào hệ điều hành máy khách và trình duyệt đã được sử dụng. Dưới đây là một số ví dụ:
Mozilla Firefox: Unix/Linux: ~/.cache/mozilla/firefox/ Windows: C:\Users\<user_name>\AppData\Local\Mozilla\Firefox\Profiles\<profile-id>\Cache2\ Internet Explorer: C:\Users\<user_name>\AppData\Local\Microsoft\Windows\INetCache\ Chrome: Windows: C:\Users\<user_name>\AppData\Local\Google\Chrome\User Data\Default\Cache Unix/Linux: ~/.cache/google-chrome
- Xem lại thông tin được lưu trong bộ nhớ đệm
Firefox cung cấp chức năng xem thông tin đã lưu trong bộ nhớ cache, điều này có thể mang lại lợi ích cho bạn với tư cách là người thử nghiệm. Tất nhiên, ngành công nghiệp này cũng đã tạo ra nhiều tiện ích mở rộng và ứng dụng bên ngoài khác nhau mà bạn có thể thích hoặc cần cho Chrome, Internet Explorer hoặc Edge.
Thông tin chi tiết về bộ nhớ cache cũng có sẵn thông qua các công cụ dành cho nhà phát triển trong hầu hết các trình duyệt hiện đại, chẳng hạn như Firefox, Chrome và Edge. Với Firefox, bạn cũng có thể sử dụng URL about: cache để kiểm tra chi tiết bộ nhớ cache.
- Kiểm tra Xử lý cho Trình duyệt Di động
Việc xử lý các lệnh trong bộ nhớ cache có thể hoàn toàn khác đối với các trình duyệt trên thiết bị di động. Do đó, người thử nghiệm nên bắt đầu phiên duyệt web mới với bộ nhớ đệm sạch và tận dụng các tính năng như Chế độ thiết bị của Chrome hoặc Chế độ thiết kế đáp ứng của Firefox để kiểm tra lại hoặc kiểm tra riêng các khái niệm đã nêu ở trên.
Ngoài ra, các proxy cá nhân như ZAP và Burp Suite cho phép người thử nghiệm chỉ định Tác nhân người dùng nào sẽ được gửi bởi trình thu thập thông tin / trình thu thập thông tin của họ. Điều này có thể được đặt để phù hợp với trình duyệt di động Tác nhân người dùng đổ chuông và được sử dụng để xem chỉ thị bộ nhớ đệm nào được gửi bởi ứng dụng đang được kiểm tra.
Thử nghiệm hộp xám
Phương pháp kiểm tra tương đương với trường hợp hộp đen, vì trong cả hai trường hợp, người kiểm tra có toàn quyền truy cập vào tiêu đề phản hồi của máy chủ và mã HTML. Tuy nhiên, với kiểm tra hộp xám, người kiểm tra có thể có quyền truy cập vào thông tin đăng nhập tài khoản cho phép họ kiểm tra các trang nhạy cảm mà chỉ người dùng đã xác thực mới có thể truy cập được.
Công cụ kiểm tra Browser Cache Weaknesses
Kiểm tra các lỗ hổng của bộ nhớ cache của trình duyệt có thể giúp bạn tìm ra các vấn đề liên quan đến bảo mật và hiệu suất trong ứng dụng web của mình. Dưới đây là một số công cụ phổ biến mà bạn có thể sử dụng để kiểm tra các lỗ hổng của bộ nhớ cache trong trình duyệt:
- Google Chrome DevTools: Google Chrome DevTools cung cấp một bộ công cụ mạnh mẽ cho các nhà phát triển web để kiểm tra và phân tích hiệu suất của trang web. Bạn có thể sử dụng Tab “Network” trong DevTools để xem các yêu cầu và phản hồi mà trình duyệt thực hiện, bao gồm các yêu cầu lấy dữ liệu từ bộ nhớ cache. Nó cũng hiển thị các thông báo về việc trang web không được sử dụng bộ nhớ cache một cách hiệu quả.
- Lighthouse: Lighthouse là một công cụ của Google giúp đánh giá chất lượng và hiệu suất của các trang web. Nó cung cấp các kiểm tra bảo mật và hiệu suất, bao gồm kiểm tra bộ nhớ cache để xem liệu trang web của bạn có sử dụng bộ nhớ cache một cách tối ưu hay không.
- WebPageTest: WebPageTest là một công cụ trực tuyến cho phép bạn kiểm tra hiệu suất của trang web từ nhiều địa điểm trên thế giới và trên nhiều trình duyệt khác nhau. Nó cũng cung cấp thông tin về việc sử dụng bộ nhớ cache trong các yêu cầu và phản hồi.
- Browser Developer Tools khác: Các trình duyệt khác nhau có các công cụ phát triển riêng của chúng, như Firefox Developer Tools và Microsoft Edge Developer Tools. Chúng cũng cung cấp các tính năng tương tự để kiểm tra hiệu suất và bảo mật của trang web, bao gồm việc kiểm tra bộ nhớ cache.
- Online Cache Testing Tools: Ngoài các công cụ trình duyệt, có một số công cụ trực tuyến cho phép bạn kiểm tra việc sử dụng bộ nhớ cache của trang web, ví dụ như “Fiddler Web Debugger” và “Web Developer Checklist”.
Khi kiểm tra các lỗ hổng của bộ nhớ cache, bạn nên tập trung vào các vấn đề như việc đảm bảo rằng các tài nguyên được đánh dấu là có thể lưu trữ tạm thời (cacheable), đúng cấu hình Cache-Control và Expires, và xử lý các trường hợp mà việc sử dụng bộ nhớ cache có thể gây ra các vấn đề bảo mật, chẳng hạn như hiển thị thông tin riêng tư cho người dùng sai hoặc thông tin cũ không còn đúng.