Defaults.Exposed

Defaults.ExposedCá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ì

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:

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í.

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:

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

Các lỗi phổ biến

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ó.