Defaults.Exposed › Cách khắc phục › Header cô lập cross-origin (COOP / CORP / COEP)
Cách khắc phục Header cô lập cross-origin (COOP / CORP / COEP)
Ba hướng dẫn trình duyệt tùy chọn kiểm soát cách các trang web khác được phép tương tác với trang của bạn — mở nó trong popup, nhúng ảnh và script của nó, hoặc kéo resource của nó vào trang của chúng. Chúng là hardening hiện đại, không phải điều phải có cơ bản, và trong tính điểm của chúng tôi chúng là thông tin: thiếu chúng không làm giảm điểm của bạn. Nhưng hai cái an toàn đóng khoảng cách phishing popup và trộm băng thông lặng lẽ, và nhóm IT của người mua cẩn thận sẽ chú ý khi chúng hiện diện.
Điểm mấu chốt với doanh nghiệp bạn: Hai trong ba header này đóng phishing popup tinh vi và ngăn các trang khác hotlink ảnh và script của bạn (tốn băng thông của bạn và có thể rò rỉ dữ liệu). Chúng miễn phí, mất khoảng 15 phút cho nhà phát triển, và không làm hỏng gì. Cái thứ ba nâng cao và có thể làm hỏng analytics, font và embed — hầu hết doanh nghiệp nên để tắt. Không cái nào ảnh hưởng điểm của bạn, vì vậy coi chúng là điều hoàn thiện, không phải cấp bách: làm hai cái an toàn, bỏ qua cái rủi ro trừ khi bạn cụ thể cần nó.
Điều này có thể gây thiệt hại gì
- Kẻ lừa đảo mở trang thật của bạn trong cửa sổ popup và giữ điều khiển từ xa — âm thầm chuyển hướng khách hàng đến đăng nhập giả ngay khi họ nhìn đi. Header an toàn (COOP) cắt đứt liên kết điều khiển đó hoàn toàn.
- Các trang web khác nhúng ảnh sản phẩm, logo và script của bạn trực tiếp từ máy chủ của bạn (hotlinking) — bạn trả cho băng thông mỗi khi khách truy cập của họ tải trang, và asset của bạn xuất hiện trên các trang bạn không bao giờ chấp thuận.
- Nhóm bảo mật của khách hàng tiềm năng chạy quét header trước khi ký và thấy bạn đã thêm hardening cross-origin hiện đại — tín hiệu nhỏ, nhưng đặt bạn vào cột 'họ coi trọng điều này' thay vì cột 'mức tối thiểu'.
- Nhà phát triển, cố gắng kỹ lưỡng, bật header cô lập nâng cao (COEP) mà không kiểm tra — và làm hỏng Google Analytics, web font và widget đặt phòng nhúng qua đêm. Biết header nào an toàn và cái nào rủi ro tránh sự cố tự gây ra.
- Danh sách kiểm tra của kiểm toán viên đề cập đến cô lập cross-origin; bạn thà hiển thị 'hiện diện và đúng' trên hai cái an toàn hơn là giải thích tại sao không có gì ở đó cả.
Tại sao điều này quan trọng. Đây là các header hardening trình duyệt hướng tương lai. Trong phương pháp của chúng tôi cả ba là thông tin — chúng được đăng ký với không điểm và không bao giờ di chuyển điểm của bạn — vì chúng là các kiểm soát nâng cao mà trang có thể hoạt động hợp pháp mà không cần, và một trong số chúng có thể gây hại nếu áp dụng sai. Chúng tôi báo cáo về chúng để bạn có thể thấy mình đứng ở đâu. Hai cái an toàn (COOP và CORP) thực sự đáng thêm: miễn phí, nhanh, và chúng đóng các khoảng cách phishing popup thật và trộm resource mà không làm hỏng gì.
Thực ra là gì, giải thích đơn giản
Khi ai đó truy cập website của bạn, trình duyệt của họ không chỉ tải các trang của bạn trong cô lập — nó cũng quyết định cách các trang web khác được phép tương tác với trang của bạn. Trang khác có thể mở trang của bạn trong popup và giữ nó không? Trang khác có thể với qua và nhúng ảnh và script của bạn trong trang của chúng không? Chính trang của bạn có thể an toàn dùng một số tính năng trình duyệt mạnh, bị khóa không?
Ba header này là hướng dẫn ngắn, vô hình website của bạn gửi đến trình duyệt của mỗi khách truy cập để trả lời chính xác những câu hỏi đó. Chúng được biết đến bằng từ viết tắt:
- COOP — Cross-Origin-Opener-Policy. Kiểm soát liệu các trang khác mở trang của bạn trong cửa sổ popup có thể giữ điều khiển từ xa của nó không.
- CORP — Cross-Origin-Resource-Policy. Kiểm soát liệu các trang khác có được phép nhúng ảnh, script và file khác của bạn trong trang của chúng không.
- COEP — Cross-Origin-Embedder-Policy. Kiểm soát nâng cao, kết hợp với COOP, “cô lập” trang của bạn để nó có thể dùng một số tính năng trình duyệt mạnh an toàn.
Hai trong số chúng (COOP và CORP) an toàn để thêm và thực sự hữu ích. Cái thứ ba (COEP) nâng cao và có thể làm hỏng mọi thứ nếu bật không cẩn thận.
Điều quan trọng nhất cần biết ngay từ đầu: trong tính điểm của chúng tôi, cả ba đều thông tin. Chúng không ảnh hưởng điểm của bạn. Thiếu một cái không tốn gì. Chúng tôi báo cáo về chúng để bạn có thể thấy mình đứng ở đâu và dọn dẹp các chiến thắng dễ dàng — không phải để bạn hoảng loạn về một con số.
Điều này có thể khiến bạn mất gì
Đây là những rủi ro niche, không phải rủi ro tiêu đề — nhưng chúng thật, và các bản sửa miễn phí.
-
Phishing popup giữ điều khiển từ xa trang thật của bạn. Không có COOP, trang của kẻ lừa đảo có thể mở chính website của bạn trong cửa sổ popup và giữ tham chiếu live đến nó. Trong khi sự chú ý của khách hàng của bạn đang ở trang của kẻ lừa đảo, kẻ tấn công có thể chuyển hướng popup đó — tên miền thật của bạn trong thanh địa chỉ — đến màn hình đăng nhập hoặc thanh toán giả chính xác vào lúc khách hàng quay lại nhìn. COOP đặt thành “same-origin” cắt đứt liên kết điều khiển đó để popup không thể bị điều khiển.
-
Các trang khác ăn cắp băng thông của bạn (và đặt asset của bạn ở nơi bạn không muốn). Không có CORP, bất kỳ trang web nào trên internet có thể nhúng ảnh sản phẩm, logo, script và file khác của bạn thẳng từ máy chủ của bạn — “hotlinking.” Mỗi khách truy cập đến trang của họ tải file từ bạn, trên hóa đơn băng thông của bạn, với asset của bạn xuất hiện trong bối cảnh bạn không bao giờ chấp thuận. CORP đặt thành “same-origin” ngăn các trang bên ngoài nhúng resource của bạn.
-
Đường rò rỉ dữ liệu lặng lẽ cho các cuộc tấn công trình duyệt nâng cao. Nhúng cross-origin tương tự cho phép hotlinking cũng là một trong các đường mà các cuộc tấn công trình duyệt tinh vi, side-channel (họ Spectre) dùng để đọc dữ liệu chúng không nên đọc. COOP và CORP cùng nhau đóng đường đó ở cấp trình duyệt. Với hầu hết doanh nghiệp nhỏ đây là phòng thủ theo chiều sâu, nhưng đó là phòng thủ miễn phí.
-
Sự cố tự gây ra từ header sai. COEP nâng cao yêu cầu mỗi resource trang của bạn tải phải rõ ràng opt in. Bật nó mà không kiểm tra và analytics, web font, bản đồ nhúng, widget đặt phòng và script bên thứ ba của bạn có thể ngừng tải — vì không ai trong số đó được yêu cầu opt in. Đây là cách duy nhất những header này thực sự có thể gây hại cho bạn, và hoàn toàn có thể tránh: đừng bật COEP mà không kiểm tra.
-
Tín hiệu dễ bị bỏ lỡ với người mua cẩn thận. Khi nhóm IT của khách hàng tiềm năng quét header của bạn trước khi ký, tìm thấy hardening cross-origin hiện đại là tín hiệu nhỏ nhưng thật “những người này coi trọng bảo mật”. Nó sẽ không thắng thỏa thuận một mình — nhưng miễn phí để ở phía đúng của sổ cái đó.
Từng cái thực ra là gì
COOP — Cross-Origin-Opener-Policy (an toàn, được khuyến nghị)
Khi trang web khác mở trang của bạn dùng popup hoặc window.open, hai cửa sổ thường có thể giữ tham chiếu đến nhau. Liên kết đó có thể bị lạm dụng: cửa sổ mở có thể thao túng hoặc chuyển hướng cửa sổ của bạn, đọc fragment URL của nó, và dàn dựng phishing thuyết phục dùng tên miền thật của bạn. COOP: same-origin phá vỡ mối quan hệ đó — cửa sổ của bạn trở nên cô lập khỏi bất cứ thứ gì mở nó qua các origin. Duyệt web bình thường, liên kết nội bộ của riêng bạn, và điều hướng thông thường hoàn toàn không bị ảnh hưởng.
“Tốt” trông như thế nào: Cross-Origin-Opener-Policy: same-origin.
CORP — Cross-Origin-Resource-Policy (an toàn, được khuyến nghị)
Theo mặc định, ảnh, script và file khác của bạn có thể được nhúng bởi bất kỳ trang nào ở bất cứ đâu. CORP: same-origin nói với trình duyệt từ chối nhúng cross-origin resource của bạn — vì vậy các trang khác không thể hotlink asset của bạn hoặc kéo chúng vào trang của chúng. Chính trang của bạn vẫn tải các resource của chính nó như trước; chỉ các trang bên ngoài bị chặn.
“Tốt” trông như thế nào: Cross-Origin-Resource-Policy: same-origin. (Nếu bạn cố ý xuất bản asset cho người khác nhúng — logo công khai, API mở — nhà phát triển của bạn có thể nới lỏng điều này trên những response cụ thể đó.)
COEP — Cross-Origin-Embedder-Policy (nâng cao, thường để tắt)
COEP hoàn thành “cô lập cross-origin”: kết hợp với COOP, nó yêu cầu mỗi resource trang của bạn tải phải rõ ràng opt in (qua CORS hoặc CORP). Làm đúng, điều này mở khóa một số tính năng trình duyệt mạnh (như SharedArrayBuffer) và thêm lớp khác chống các cuộc tấn công loại Spectre. Nhưng vì nó yêu cầu opt-in từ mọi thứ bạn tải, nó dễ dàng làm hỏng các công cụ bên thứ ba — analytics, font, widget nhúng — không được xây dựng để opt in. Hầu hết trang không cần các tính năng nó mở khóa và không nên chịu rủi ro làm hỏng.
“Tốt” trông như thế nào: với trang hiếm hoi cần nó, Cross-Origin-Embedder-Policy: credentialless — giá trị an toàn hơn, ít có khả năng làm hỏng resource bên ngoài hơn require-corp. Với mọi người khác, vắng mặt là ổn, và báo cáo của chúng tôi sẽ không phạt bạn vì điều đó.
Cách sửa (miễn phí, ~15 phút)
Chuyển cho người IT hoặc nhà phát triển web của bạn — bản sửa miễn phí. Thêm COOP và CORP là vài cài đặt một dòng trên máy chủ hoặc CDN của bạn; không có giấy phép và không có chi phí liên tục. Hướng dẫn duy nhất cho chủ sở hữu là: làm hai cái an toàn, và không bật COEP mà không kiểm tra.
Đây là response header, được đặt bất cứ nơi nào response của trang của bạn được tạo ra — dễ nhất tại CDN của bạn (ví dụ Cloudflare) nếu bạn có, nếu không thì trong cấu hình máy chủ web.
Hai header an toàn (được khuyến nghị cho mọi người)
Cloudflare — Rules → Transform Rules → Modify Response Headers → Đặt:
Cross-Origin-Opener-Policy=same-originCross-Origin-Resource-Policy=same-origin
Nginx:
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
Apache:
Header always set Cross-Origin-Opener-Policy "same-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"
Những cái này an toàn để thêm và sẽ không làm hỏng chức năng bình thường. Sau khi triển khai, reload vài trang và xác nhận trang hoạt động chính xác như trước (nó nên).
Header nâng cao (chỉ khi bạn cụ thể cần nó)
Đừng bật cái này mà không kiểm tra trong staging trước. COEP có thể làm hỏng analytics, font và widget nhúng.
Cloudflare: Transform Rules → Đặt Cross-Origin-Embedder-Policy = credentialless.
Nginx:
add_header Cross-Origin-Embedder-Policy "credentialless" always;
Dùng credentialless thay vì require-corp — ít có khả năng làm hỏng resource bên ngoài hơn. Kiểm tra kỹ lưỡng trong staging; xem mọi script, font hoặc embed bên thứ ba nào ngừng tải. Nếu có gì đó bị hỏng và bạn không thực sự cần các tính năng COEP mở khóa, đơn giản xóa header — không có hình phạt vì không có nó.
Ghi chú nền tảng
- Google Workspace / Microsoft 365: những thứ này chạy email của bạn, không phải website, vì vậy không có gì cần đặt ở đây. Những header này thuộc về bất cứ thứ gì host website của bạn (CDN, host, hoặc máy chủ).
- Managed host / site builder phổ biến (Wix, Squarespace, Shopify, v.v.): response header tùy chỉnh có thể không cấu hình được trên các gói thấp hơn. Nếu bạn không thể thêm chúng, không sao — những cái này là thông tin và không ảnh hưởng điểm. Đặt trang phía sau CDN như Cloudflare là cách thông thường để có quyền kiểm soát header.
- WordPress trên hosting của riêng bạn: đặt chúng trong cấu hình máy chủ web (Nginx/Apache ở trên) hoặc qua CDN, không phải trong plugin nếu có thể — cấp máy chủ/CDN sạch hơn và áp dụng cho mọi response.
Các lỗi phổ biến
- Bật COEP “để kỹ lưỡng” và làm hỏng trang. Đây là cái lớn nhất. COEP yêu cầu opt-in từ mọi thứ bạn tải; bật nó mà không kiểm tra và analytics, font và embed của bạn có thể biến mất. Nếu bạn không cần các tính năng trình duyệt nó mở khóa, đừng đặt nó.
- Coi những cái này là cấp bách vì scanner đề cập đến chúng. Chúng là thông tin. Các header web có điểm (HTTPS, HSTS, CSP, clickjacking, MIME-sniffing) đến trước — sửa những cái đó trước khi dành năng lượng ở đây.
- Đặt CORP quá nghiêm ngặt khi bạn thực sự xuất bản asset có thể nhúng. Nếu bạn cố ý phục vụ logo, huy hiệu hoặc API cho các trang khác dùng, CORP
same-origintoàn bộ sẽ chặn chúng. Nới lỏng nó chỉ trên những response đó thay vì từ bỏ header ở khắp nơi. - Thêm header ở cấp trang/app và bỏ lỡ một số response. Đặt chúng ở cấp máy chủ hoặc CDN để chúng áp dụng cho mọi response (ảnh, script, endpoint API), không chỉ trang HTML.
- Nhầm lẫn những cái này với ổ khóa SSL. HTTPS mã hóa kết nối; những cái này kiểm soát tương tác cross-site. Chúng không liên quan, và bạn muốn cả hai.
Ghi chú về điểm
Để hoàn toàn rõ ràng: không cái nào trong ba kiểm tra này ảnh hưởng điểm của bạn. Chúng được đăng ký trong phương pháp của chúng tôi là thông tin, với không điểm, và thiếu một cái không bao giờ tốn gì của bạn. Chúng tôi hiển thị chúng vì hai cái an toàn là cải tiến rẻ, thực sự và vì thấy bức tranh đầy đủ hữu ích — không phải vì có con số cần bảo vệ. Nếu bạn không làm gì ở đây, điểm của bạn là chính xác như nhau. Nếu bạn thêm COOP và CORP, bạn đã đóng một vài khoảng cách thật (dù niche) miễn phí. Đó là cách đúng để nghĩ về trang này: hoàn thiện tùy chọn, với một bẫy được gắn nhãn rõ ràng cần tránh.
FAQ
Những cái này không ảnh hưởng điểm của tôi — tôi có nên làm không?
Hai trong số chúng, có; một cái, có lẽ không. COOP và CORP miễn phí, mất vài phút, và sẽ không làm hỏng trang của bạn — chúng đóng các đường tấn công thật (dù niche), vì vậy đáng làm như vệ sinh rẻ. COEP nâng cao và có thể làm hỏng công cụ bên thứ ba, vì vậy hầu hết doanh nghiệp nên để tắt trừ khi họ cụ thể cần các tính năng trình duyệt mà nó mở khóa. Không cái nào trong ba thay đổi điểm của bạn theo bất kỳ hướng nào, vì vậy không có sự cấp bách — coi hai cái an toàn là dọn dẹp lần sau khi nhà phát triển của bạn vào trang.
Tôi không rành kỹ thuật — đây có phải thứ tôi phải thực hiện không?
Không cần cá nhân, và không cấp bách. Vì những cái này là thông tin, không có gì xấu xảy ra với điểm của bạn nếu bạn bỏ qua chúng. Nếu bạn muốn thêm hai cái an toàn, chuyển phần 'Cách sửa' cho người quản lý website hoặc CDN của bạn — đó là vài cài đặt một dòng và bản sửa miễn phí. Cái duy nhất cần gắn cờ rõ ràng là COEP: nói với họ không bật nó mà không kiểm tra, vì nó có thể làm hỏng analytics và widget nhúng.
Sự khác biệt giữa những cái này và các header CÓ ảnh hưởng điểm của tôi là gì?
Các header bảo mật web có điểm — chuyển hướng HTTPS, HSTS, Content-Security-Policy, bảo vệ clickjacking (X-Frame-Options), và bảo vệ MIME-sniffing — bảo vệ chống lại các cuộc tấn công phổ biến, được khai thác rộng rãi, vì vậy thiếu chúng tốn điểm. Ba cái trên trang này (COOP, CORP, COEP) là các kiểm soát cô lập trình duyệt mới hơn, chuyên biệt hơn. Chúng là thực hành tốt nhưng chưa phải kỳ vọng cơ bản, vì vậy chúng tôi báo cáo về chúng mà không tính điểm. Làm những cái có điểm trước; đây là hoàn thiện trên đó.
Thêm COOP hoặc CORP có làm hỏng website hoặc tích hợp của đối tác không?
Các cài đặt được khuyến nghị (cả hai 'same-origin') được thiết kế để an toàn. COOP chỉ cắt đứt liên kết đến các cửa sổ trang của bạn mở trong popup — duyệt web bình thường, các trang của riêng bạn, và liên kết thông thường không bị ảnh hưởng. CORP chỉ ngăn *các trang khác* nhúng ảnh và script của bạn; chính trang của bạn tải các resource của chính nó như trước. Nếu bạn thực sự phục vụ asset (như logo công khai hoặc API) mà các trang khác muốn nhúng, nhà phát triển của bạn có thể dùng cài đặt cho phép hơn trên những response cụ thể đó. Cái thực sự có nguy cơ làm hỏng là COEP — giữ cái đó tắt trừ khi đã kiểm tra.
'Hotlinking' thực sự tốn gì của tôi?
Khi trang khác nhúng ảnh hoặc script của bạn thẳng từ máy chủ của bạn thay vì host bản sao của chính họ, mọi khách truy cập đến trang của họ tải nó từ bạn — trên hóa đơn băng thông của bạn, và hiển thị asset của bạn trong bối cảnh bạn không chấp thuận. Với doanh nghiệp nhỏ hiếm khi là thảm họa, nhưng đó là tiền miễn phí ra ngoài, và CORP ('same-origin') ngăn nó ở cấp trình duyệt. Nó cũng đóng đường rò rỉ dữ liệu tinh tế mà các cuộc tấn công trình duyệt nâng cao (loại Spectre) dựa vào.
'Tốt' trông như thế nào với từng cái?
COOP: header Cross-Origin-Opener-Policy đặt thành 'same-origin'. CORP: header Cross-Origin-Resource-Policy đặt thành 'same-origin'. COEP: header Cross-Origin-Embedder-Policy — và nếu bạn đặt nó, 'credentialless' là giá trị an toàn hơn 'require-corp'. Báo cáo của chúng tôi chỉ ghi nhận mỗi cái có hiện diện không và được đặt thành gì; nó không bao giờ phạt bạn vì thiếu. Nhắm đến COOP và CORP hiện diện; để COEP vắng mặt trừ khi bạn đã kiểm tra nó.