Bài viết này sẽ giải thích cho các bạn "nội dung hỗn hợp" là gì, và tại sao Google cứ phải chặn "bằng được"?
Nội dung hỗn hợp (Mixed Content) là gì?
Trên mạng Internet hiện đang có hai loại nội dung: Nội dung được truyền tải thông qua kết nối HTTPS bảo mật và có mã hoá, và nội dung được truyền tải thông qua kết nối HTTP không được mã hoá. Khi sử dụng HTTPS, nội dung của bạn sẽ không thể bị xem trộm hay đánh cắp khi chúng đang trong quá trình di chuyển trên mạng, đó là lý do vì sao các trang web thường cung cấp tính năng mã hoá, nhất là khi thu thập và truyền tải các dữ liệu quan trọng của người dùng như thông tin tài chính hay các tập tin cá nhân riêng tư.
Hiện tại, xu thế của hệ thống mạng Internet đang dần chuyển sang các trang web HTTPS bảo mật. Nếu bạn kết nối tới một trang web HTTP cũ không được mã hoá dữ liệu, Google Chrome sẽ hiển thị cảnh báo trên thanh địa chỉ (URL) rằng những trang web này "không bảo mật". Thậm chí, Google mặc định còn ẩn chữ "https://", hàm ý là giờ đây việc các trang web phải bảo mật là chuyện đương nhiên. Bên cạnh đó, chuẩn HTTP/3 mới cũng sẽ được tích hợp tính năng mã hoá ngay từ đầu.
Tuy nhiên, có một số trang web chưa hoàn toàn chuyển sang giao thức có mã hoá HTTPS, nhưng cũng không hẳn là toàn bộ nội dung trang vẫn còn đang được truyền tải qua giao thức HTTP thông thường. Đối với những trang web này, phần lớn nội dung trang đã được truyền qua kết nối HTTPS bảo mật, nhưng chúng vẫn tải một số hình ảnh, các đoạn mã hay một số tài nguyên khác thông qua kết nối HTTP không mã hoá. Những trang web như vậy được gọi là "nội dung hỗn hợp", bởi không phải tất cả các nội dung của chúng đều được truyền tải qua kết nối bảo mật. Bản thân trang web thì không dễ bị giả mạo bởi chúng đã được mã hoá, nhưng nó có thể tải các đoạn mã, hình ảnh, khung iframe (một trang web khác được tải trong một "khung" đặt trên trang web chính) bên ngoài đã bị can thiệp và làm giả mạo.
Vì sao "nội dung hỗn hợp" lại có tác động tiêu cực đến sự an toàn của người dùng?
Nội dung hỗn hợp thường khiến cho người dùng thông thường cảm thấy bối rối. Làm sao mà tin được trang web bạn đang xem "vừa bảo mật, vừa không bảo mật" được (!?) Tuy nhiên, vấn đề thực sự đằng sau là như thế này: hầu hết các nội dung có trong trang web bạn đang xem là bảo mật và an toàn, tuy nhiên, trong mã nguồn của trang lại có tải một tập tin JavaScript thông qua giao thức kết nối HTTP thông thường. Đoạn mã đó có thể bị can thiệp, chỉnh sửa và giả mạo bởi những người có mục đích xấu – chẳng hạn khi bạn đang sử dụng mạng Wi-Fi công cộng không có các chế độ bảo mật và không đáng tin cậy – để làm những việc "không tốt", chẳng hạn như theo dõi các thao tác gõ phím của bạn hay chèn một cookie theo dõi vào trình duyệt mà bạn đang sử dụng.
Mặc dù các đoạn mã và khung iframe nhúng – các "nội dung động" – là nguy hiểm nhất, song thậm chí ngay cả hình ảnh, video và các file âm thanh cũng có thể tiềm ẩn nhiều rủi ro. Ví dụ, hãy tưởng tượng bạn đang truy cập một trang web giao dịch cổ phiếu được bảo mật nhưng lại truyền hình ảnh lịch sử giao dịch thông qua kết nối HTTP truyền thống. Bản thân bức ảnh đó không được bảo mật – chúng có thể bị các hacker thay thế bằng một hình ảnh giả mạo khác trong quá trình truyền tải, nhằm cung cấp cho người dùng thông tin sai lệch. Ngoài ra, cũng do hình ảnh đó được truyền qua một kết nối không được mã hoá, nên bất kỳ ai có thể can thiệp và "xem trộm" dữ liệu này trong khi nó được truyền đi qua mạng cũng sẽ biết bạn đang giao dịch những mã cổ phiếu nào, số lượng bao nhiêu…
Nói tóm lại, việc "trộn lẫn" các nội dung truyền tải qua các giao thức khác nhau như thế này là một ý tưởng không hay chút nào. Nếu trang web của bạn sử dụng kết nối HTTPS, thì mọi tài nguyên được tải trên trang cũng phải được truyền qua giao thức mã hoá HTTPS. Việc "trộn lẫn" như thế này là kết quả của lịch sử - vốn ban đầu thế giới Internet sử dụng giao thức HTTP, rồi dần dần mới nâng cấp lên giao thức mã hoá HTTPS. Trong quá trình chuyển đổi này, không phải tất cả các máy chủ lưu trữ tài nguyên đều được cập nhật ngay sang HTTPS cùng thời điểm với trang web chính. Hoặc cũng có thể các trang web đó phụ thuộc vào tài nguyên của bên thứ ba vốn chưa hỗ trợ HTTPS.
Giờ đây, với việc Google và một số nhà sản xuất trình duyệt web đang dần có những biện pháp mạnh với "nội dung hỗn hợp", các chủ sở hữu trang web sẽ phải nhanh chóng giải quyết vấn đề về bảo mật truyền dẫn này để các trang web có thể hoạt động bình thường, đúng như thiết kế.
Vậy Google Chrome đang thay đổi điều đó như thế nào?
Chrome hiện đã chặn các đoạn mã và khung iframe nhúng theo dạng "nội dung hỗn hợp". Ở phiên bản Chrome 80 sẽ ra mắt thử nghiệm vào tháng 1 năm 2020 tới, Chrome sẽ chặn luôn cả các tài nguyên âm thanh và video được truyền dẫn theo kiểu "hỗn hợp" như vậy. Trên thực tế, về mặt kỹ thuật, Chrome sẽ cố gắng tải các tài nguyên hỗn hợp đó theo kết nối HTTPS bảo mật trước, và nếu không được thì mới tiến hành chặn. Các bức ảnh "hỗn hợp" vẫn sẽ được phép tải, nhưng Chrome sẽ hiển thị dòng chữ "Không an toàn" (Not Secure) trên thanh địa chỉ của trang web để cảnh báo cho người dùng biết. Và ở phiên bản Chrome 81, trình duyệt này sẽ chặn các hình ảnh được truyền theo kiểu "hỗn hợp". Người dùng vẫn có thể cho phép tải các nội dung hỗn hợp nếu muốn, nhưng họ sẽ phải làm thêm một số thao tác bổ sung. Còn theo mặc định thì các nội dung này sẽ không được phép tải.
Những nỗ lực này của Chrome không làm khó dễ gì cho người dùng, mà chỉ là một trong những nỗ lực giúp cho thế giới web trở nên an toàn hơn mà thôi. Trong một bài blog mới đây, Google cho biết công ty hy vọng dòng thông báo "Không an toàn" (Not Secure) sẽ là động lực thúc đẩy các trang web chuyển sang truyền tải toàn bộ hình ảnh qua giao thức mã hoá HTTPS.
Làm thế nào để bỏ chặn các "nội dung hỗn hợp" trên trình duyệt Chrome?
Phiên bản Chrome hiện tại đã chặn một số loại nội dung hỗn hợp. Khi phát hiện ra nội dung dạng này, trình duyệt sẽ tự động chặn chúng và hiển thị biểu tượng hình cái khiên trên thanh địa chỉ của trang web, cùng thông báo "Nội dung không àn toàn đã bị chặn" (Insecure content blocked). Bạn có thể thử nghiệm cách tính năng này hoạt động bằng cách truy cập vào trang web mẫu chứa nội dung hỗn hợp do Google tạo ra để minh hoạ tại đây. Để bỏ chặn một đoạn mã được truyền tải theo dạng "hỗn hợp", bạn hãy nhấn chuột vào biểu tượng hình cái khiên trên thanh địa chỉ, rồi chọn liên kết "Load unsafe scripts" (Tải các đoạn mã không an toàn).
Nếu bạn cho phép tải nội dung hỗn hợp, Chrome sẽ hiển thị dòng chữ Not Secure (Không an toàn) bên trái địa chỉ trang web.
Với phiên bản Chrome 79, phát hành vào khoảng tháng 12/2019, Google sẽ đơn giản hoá thao tác này. Bạn chỉ cần nhấn vào biểu tượng hình cái khoá ở bên trái thanh địa chỉ URL, nhấn "Site Settings" (Cài đặt trang) và chọn bỏ chặn các nội dung hỗn hợp đối với riêng trang web đó.
Như vậy, càng về sau tuỳ chọn bỏ chặn nội dung hỗn hợp sẽ càng bị Google "giấu" kỹ hơn, song đó cũng là dụng ý tốt: bởi Google muốn người dùng không bao giờ cho phép tải các nội dung hỗn hợp để bảo đảm an toàn. Các nhà phát triển trang web cần phải khắc phục vấn đề này, để có thể truyền tải tất cả các tài nguyên web một cách an toàn và bảo mật hơn. Tuỳ chọn này cũng giúp bảo đảm rằng những trang web doanh nghiệp cũ vẫn có thể truy cập được ngay cả khi chúng chứa nội dung hỗn hợp.
Nếu bạn hiện vẫn đang cần sử dụng trang web chứa nội dung hỗn hợp, thì cũng chưa cần phải lo lắng: Google vẫn chưa công bố thời điểm loại bỏ hoàn toàn tuỳ chọn cho phép tải các nội dung hỗn hợp. Trình duyệt Chrome sẽ chặn tất cả các nội dung hỗn hợp theo mặc định, song vẫn sẽ cung cấp tuỳ chọn cho phép người dùng tải các nội dung này trong trường hợp thực sự cần.
Vậy còn các trình duyệt khác?
Rõ ràng Chrome không phải trình duyệt duy nhất làm điều này. Firefox hiện cũng đã chặn các nội dung hỗn hợp gồm các đoạn mã và khung iframe nhúng, buộc người dùng phải chọn tuỳ chọn "Disable protection for now" (Tạm thời vô hiệu hoá chức năng bảo vệ) để xem các nội dung này. Trong tương lai gần chắc chắn Mozilla cũng sẽ "học theo" Google. Trình duyệt Safari của Apple cũng rất "mạnh tay" trong việc chặn các nội dung hỗn hợp.
Còn trình duyệt Edge mới của Microsoft thì sao? Chắc chắn rồi, do trình duyệt này được xây dựng dựa trên mã nguồn mở Chromium, và đây cũng là mã nguồn tạo nên Google Chrome, do đó Edge cũng sẽ "hành xử" giống như Chrome.
Quang Huy