Giờ đây, nhà phát triển sử dụng COEP có thể nhúng iframe của bên thứ ba không tự sử dụng COEP.
Iframe không có thông tin xác thực được bật theo mặc định từ Chrome phiên bản 110. Công cụ này giải quyết những khiếu nại phổ biến nhất mà các nhà phát triển khiếu nại làm việc với Chính sách về nhiều nguồn gốc nhúng (COEP): nhúng các iframe của bên thứ ba không đặt COEP.
Lý do chúng ta cần COEP
Một số API web làm tăng nguy cơ bị tấn công kênh bên (chẳng hạn như Spectre). Để giảm thiểu rủi ro đó, các trình duyệt cung cấp một môi trường tách biệt dựa trên lựa chọn tham gia được gọi là cách ly nhiều nguồn gốc. Môi trường này yêu cầu bạn phải triển khai COEP. Chế độ tách biệt nhiều nguồn gốc cho phép các trang web sử dụng các tính năng đặc quyền, trong đó có SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
và bộ tính giờ có độ chính xác cao với độ phân giải cao hơn.
Để bật tính năng tách biệt nhiều nguồn gốc, các trang web phải gửi các tiêu đề HTTP sau đây:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Bạn cũng có thể dùng COEP:credentialless để thay thế cho require-corp
. Hãy xem tài liệu này để biết thêm thông tin chi tiết.
Thách thức khi áp dụng COEP
Mặc dù tính năng tách biệt nhiều nguồn gốc mang lại khả năng bảo mật tốt hơn cho trang web và khả năng bật các tính năng mạnh mẽ, nhưng việc triển khai COEP có thể khó. Một trong những thách thức lớn nhất là tất cả các iframe trên nhiều nguồn gốc đều phải triển khai COEP và CORP. Trình duyệt sẽ không tải khung nội tuyến không có tiêu đề đó.
Iframe không có thông tin xác thực để khôi phục
Chúng tôi sẽ ra mắt <iframe credentialless>
để hỗ trợ nhúng các iframe của bên thứ ba không đặt COEP. Khi thêm thuộc tính credentialless
vào phần tử <iframe>
, iframe sẽ được tải qua một ngữ cảnh trống và khác. Cụ thể, tệp được tải mà không cần cookie. Điều này cho phép loại bỏ quy định hạn chế COEP.
Ví dụ:
<iframe credentialless src="https://example.com">
iframe này được tạo trong ngữ cảnh mới tạm thời và không có quyền truy cập vào bất kỳ cookie nào được liên kết với trang web cấp cao nhất. Thay vào đó, mã này sẽ bắt đầu bằng một lọ cookie trống. Tương tự, các API lưu trữ như LocalStorage, CacheStorage, IndexedDB, v.v. tải và lưu trữ dữ liệu trong phân vùng tạm thời mới. Phân vùng này nằm trong phạm vi cả tài liệu cấp cao nhất hiện tại và nguồn gốc của iframe. Toàn bộ bộ nhớ này sẽ bị xoá khi tài liệu cấp cao nhất được huỷ tải.
Iframe không có thông tin xác thực không phải tuân theo quy tắc nhúng COEP. Chúng vẫn an toàn: vì chúng luôn được tải từ một ngữ cảnh trống mới, nên chúng không được chứa dữ liệu được cá nhân hoá và dữ liệu mà kẻ tấn công thực hiện. Nếu iframe chỉ chứa dữ liệu công khai thì iframe đó không có giá trị đối với kẻ tấn công.
Bản minh hoạ
Bạn có thể xem bản minh hoạ iframe không có thông tin xác thực.
Câu hỏi thường gặp
Các trình duyệt khác có áp dụng tính năng này không?
- Yêu cầu của Mozilla cho vị trí: Đang chờ xử lý
- Yêu cầu vị trí của Webkit: Không có tín hiệu
- THẺ W3C Yêu cầu cho vị trí: hài lòng
<iframe>
có được lồng bên trong một <iframe credentialless>
không có thông tin xác thực không?
Có. Kiểu dữ liệu này được kế thừa. Khi iframe không có thông tin xác thực, điều này sẽ áp dụng cho tất cả các iframe trong toàn bộ cây con ngay cả khi không có thuộc tính credentialless
.
Cửa sổ bật lên có được tạo từ <iframe credentialless>
không có thông tin xác thực không?
Cửa sổ bật lên được mở như thể bạn đã thiết lập noopener
. Các thư viện này được tạo trong ngữ cảnh cấp cao nhất, thông thường mới và không phải là thông tin xác thực. Họ không thể giao tiếp với iframe không có thông tin xác thực.
Cách phát hiện tài liệu đã được nhúng trong iframe không có thông tin xác thực?
window.credentialless
có giá trị true trong iframe không có thông tin xác thực và nếu không thì giá trị sẽ là false. Giá trị của lớp này là undefined
trong trình duyệt web không hỗ trợ <iframe credentialless>
.
Tài nguyên
- Tạo trang web "tách biệt nhiều nguồn gốc" bằng cách dùng COOP và COEP
- Lý do bạn cần đến tính năng "được tách biệt nhiều nguồn gốc" cho các tính năng mạnh mẽ
- Hướng dẫn bật tính năng tách biệt nhiều nguồn gốc
- Nội dung cập nhật SharedArrayBuffer trong Android Chrome 88 và Chrome 92 dành cho máy tính
- Tải tài nguyên trên nhiều nguồn gốc mà không cần tiêu đề CORP bằng
COEP: credentialless
- IFrame không thông tin xác thực – Bảo mật web | Mã nhận dạng cho nhà quảng cáo (MDN)