Defaults.Exposed › رفع اشکالها › Cross-origin isolation headers (COOP / CORP / COEP)
چطور Cross-origin isolation headers (COOP / CORP / COEP) را رفع کنید
سه دستورالعمل اختیاری مرورگر که کنترل میکنند سایتهای دیگر چگونه مجاز هستند با سایت شما تعامل داشته باشند — باز کردن آن در popup ها، تعبیه کردن تصاویر و اسکریپتهایش، یا کشیدن منابعش به صفحات خودشان. آنها سختگیری مدرن هستند، نه یک الزام اساسی، و در نمرهگذاری ما اطلاعاتی هستند: نداشتنشان نمرهی شما را پایین نمیآورد. اما دو تای امن آنها یک شکاف فیشینگ popup آرام و سرقت پهنای باند را میبندند، و تیم IT یک خریدار دقیق متوجه حضورشان میشود.
نتیجه نهایی برای کسبوکار شما: دو تا از این سه header فیشینگ popup پیشرفته را خاموش میکنند و از تعبیه کردن مستقیم تصاویر و اسکریپتهای شما توسط سایتهای دیگر جلوگیری میکنند (که پهنای باند شما را هزینه میکند و میتواند داده نشت دهد). رایگان هستند، حدود ۱۵ دقیقه از وقت توسعهدهنده میگیرند، و چیزی نمیشکنند. سومی پیشرفته است و میتواند analytics، فونتها و embed ها را بشکند — اکثر کسبوکارها باید آن را خاموش بگذارند. هیچکدام از آنها نمرهی شما را تغییر نمیدهند، پس آنها را به عنوان صیقل دهی، نه وحشت، تلقی کنید: دو تای امن را انجام دهید، یکی پرریسک را رد کنید مگر اینکه خاصتاً به آن نیاز داشته باشید.
هزینه این برای شما
- یک کلاهبردار سایت واقعی شما را در یک پنجرهی popup باز میکند و کنترل از راه دور آن را حفظ میکند — بهآرامی مشتری شما را به یک login جعلی هدایت میکند در لحظهای که نگاهشان را برمیگردانند. header امن (COOP) آن لینک کنترل را کاملاً قطع میکند.
- سایتهای دیگر عکسهای محصول، لوگو و اسکریپتهای شما را مستقیم از سرور شما تعبیه میکنند (hotlinking) — هر بار که بازدیدکنندگانشان صفحه را بارگذاری میکنند شما پهنای باند را پرداخت میکنید، و asset های شما در سایتهایی ظاهر میشوند که هرگز تأیید نمیکردید.
- تیم امنیتی یک مشتری احتمالی یک اسکن header قبل از امضا اجرا میکند و میبیند سختگیری cross-origin مدرن اضافه کردهاید — سیگنال کوچکی، اما شما را در ستون 'این را جدی میگیرند' به جای 'حداقل' قرار میدهد.
- یک توسعهدهنده، با تلاش برای کامل بودن، header isolation پیشرفته (COEP) را بدون آزمایش روشن میکند — و Google Analytics، فونتهای وب و ویجت رزرو تعبیه شده شما شبانه از کار میافتند. دانستن کدام header امن است و کدام پرریسک از یک خرابی خودساخته جلوگیری میکند.
- چکلیست یک حسابرس isolation cross-origin را ذکر میکند؛ ترجیح میدهید 'حاضر و درست' روی دو تای امن نشان دهید تا توضیح دهید چرا اصلاً چیزی نیست.
چرا اهمیت دارد. اینها header های سختگیری مرورگر آیندهنگر هستند. در روششناسی ما هر سه اطلاعاتی هستند — با صفر امتیاز ثبت شدهاند و هرگز نمرهی شما را جابجا نمیکنند — چون کنترلهای پیشرفتهای هستند که یک سایت میتواند بدون آنها به طور مشروع کار کند، و یکی از آنها اگر به اشتباه اعمال شود میتواند آسیب برساند. ما روی آنها گزارش میدهیم تا بتوانید ببینید کجا قرار دارید. دو تای امن (COOP و CORP) واقعاً ارزش اضافه کردن دارند: رایگان، سریع، و شکافهای واقعی فیشینگ popup و سرقت منابع را بدون شکستن چیزی میبندند.
این چیست، به زبان ساده
وقتی کسی از وبسایت شما بازدید میکند، مرورگرشان نه فقط صفحات شما را در isolation بارگذاری میکند — بلکه همچنین تصمیم میگیرد سایتهای دیگر چگونه مجاز هستند با سایت شما تعامل داشته باشند. آیا سایت دیگری میتواند سایت شما را در یک popup باز کند و آن را حفظ کند؟ آیا سایت دیگری میتواند تصاویر و اسکریپتهای شما را در صفحات خودشان تعبیه کند؟
این سه header دستورالعملهای کوتاه و نامرئی هستند که وبسایت شما به مرورگر هر بازدیدکننده میفرستد تا دقیقاً به این سؤالات پاسخ دهد. با حروف اختصاریشان شناخته میشوند:
- COOP — Cross-Origin-Opener-Policy. کنترل میکند آیا سایتهای دیگری که سایت شما را در یک پنجرهی popup باز میکنند میتوانند کنترل از راه دور آن را حفظ کنند.
- CORP — Cross-Origin-Resource-Policy. کنترل میکند آیا سایتهای دیگر مجاز هستند تصاویر، اسکریپتها و فایلهای دیگر شما را در صفحات خودشان تعبیه کنند.
- COEP — Cross-Origin-Embedder-Policy. یک کنترل پیشرفته که، همراه با COOP، صفحهی شما را «isolate» میکند تا بتواند از برخی ویژگیهای قدرتمند مرورگر به طور ایمن استفاده کند.
دو تا از آنها (COOP و CORP) برای اضافه کردن امن هستند و واقعاً مفید. سومی (COEP) پیشرفته است و اگر بدون مراقبت روشن شود میتواند چیزها را بشکند.
مهمترین چیز برای دانستن: در نمرهگذاری ما، هر سه اطلاعاتی هستند. نمرهی شما را تحت تأثیر قرار نمیدهند. یک گمشده هیچ هزینهای ندارد.
این چقدر ممکن است برای شما هزینه داشته باشد
اینها ریسکهای خاص هستند، نه ریسکهای اصلی — اما واقعی هستند، و رفعها رایگان هستند.
-
فیشینگ popup که کنترل از راه دور سایت واقعی شما را حفظ میکند. بدون COOP، صفحهی یک کلاهبردار میتواند وبسایت واقعی شما را در یک پنجرهی popup باز کند و یک مرجع زنده به آن نگه دارد. در حالی که توجه مشتری شما روی صفحهی کلاهبردار است، مهاجم میتواند آن popup را — دامنهی واقعی شما در نوار آدرس — به یک صفحهی login یا پرداخت جعلی هدایت کند.
-
سایتهای دیگر پهنای باند شما را دزدیدند (و asset های شما را در جایی که نمیخواهید قرار دادند). بدون CORP، هر وبسایتی روی اینترنت میتواند عکسهای محصول، لوگو، اسکریپتها و فایلهای دیگر شما را مستقیم از سرور شما تعبیه کند — «hotlinking.» هر بازدیدکنندهی سایتشان فایل را از شما دانلود میکند.
-
یک مسیر نشت دادهی آرام برای حملات پیشرفته مرورگر. همان تعبیه cross-origin که hotlinking را ممکن میکند همچنین یکی از مسیرهایی است که حملات پیشرفته و جانبی مرورگر (خانوادهی Spectre) برای خواندن دادهای که نباید از آن استفاده میکنند.
-
یک خرابی خودساخته از header اشتباه. COEP پیشرفته از هر منبعی که سایتتان بارگذاری میکند میخواهد صریحاً opt in کند. بدون آزمایش آن را روشن کنید و analytics، فونتهای وب، نقشههای تعبیه شده، ویجتهای رزرو و اسکریپتهای شخص ثالث میتوانند همه متوقف شوند.
هر کدام واقعاً چیست
COOP — Cross-Origin-Opener-Policy (امن، توصیه شده)
وقتی سایت دیگری سایت شما را با استفاده از popup یا window.open باز میکند، دو پنجره معمولاً میتوانند یک مرجع به یکدیگر داشته باشند. COOP: same-origin آن رابطه را میشکند — پنجرهی شما از هر چیزی که آن را از منشأ دیگری باز کرده isolated میشود.
«خوب» چه شکلی است: Cross-Origin-Opener-Policy: same-origin.
CORP — Cross-Origin-Resource-Policy (امن، توصیه شده)
به طور پیشفرض، تصاویر، اسکریپتها و فایلهای دیگر شما میتوانند توسط هر سایتی در هر جایی تعبیه شوند. CORP: same-origin به مرورگرها میگوید از تعبیهی cross-origin منابع شما امتناع کنند.
«خوب» چه شکلی است: Cross-Origin-Resource-Policy: same-origin.
COEP — Cross-Origin-Embedder-Policy (پیشرفته، معمولاً خاموش بگذارید)
COEP «isolation cross-origin» را کامل میکند: همراه با COOP، از هر منبعی که صفحهی شما بارگذاری میکند میخواهد صریحاً opt in کند. انجام شده درست، این ویژگیهای قدرتمند مرورگر را باز میکند و یک لایهی دیگر در برابر حملات Spectre اضافه میکند. اما چون از همه چیزی که بارگذاری میکنید opt-in میخواهد، به راحتی ابزارهای شخص ثالث را میشکند.
«خوب» چه شکلی است: برای سایتی که به آن نیاز دارد، Cross-Origin-Embedder-Policy: credentialless. برای همهی دیگران، غایب خوب است.
چگونه آن را رفع کنیم (رایگان، ~۱۵ دقیقه)
این را به IT یا توسعهدهندهی وب خود بدهید — رفع رایگان است. اضافه کردن COOP و CORP چند تنظیم یکخطی روی سرور یا CDN شماست. تنها دستورالعمل برای مالک: دو تای امن را انجام دهید، و COEP را بدون آزمایش فعال نکنید.
دو header امن (توصیه شده برای همه)
Cloudflare — Rules → Transform Rules → Modify Response Headers → Set:
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"
اینها برای اضافه کردن امن هستند و عملکرد عادی را نمیشکنند.
Header پیشرفته (فقط اگر خاصتاً به آن نیاز دارید)
این را بدون آزمایش در staging روشن نکنید. COEP میتواند analytics، فونتها و ویجتهای تعبیه شده را بشکند.
Nginx:
add_header Cross-Origin-Embedder-Policy "credentialless" always;
از credentialless به جای require-corp استفاده کنید — احتمال شکستن منابع خارجی کمتر است.
اشتباهات رایج
- فعال کردن COEP ‘برای کامل بودن’ و شکستن سایت. COEP از همه چیزی که بارگذاری میکنید opt-in میخواهد؛ بدون آزمایش آن را روشن کنید و analytics، فونتها و embed ها میتوانند ناپدید شوند.
- رفتار با اینها به عنوان فوری چون یک اسکنر آنها را ذکر کرد. آنها اطلاعاتی هستند. header های امنیت وب نمرهگذاری شده (HTTPS، HSTS، CSP، clickjacking، MIME-sniffing) اول میآیند.
- تنظیم CORP خیلی سختگیرانه وقتی واقعاً asset های قابل تعبیه منتشر میکنید. اگر عمداً یک لوگو، بادج یا API برای استفاده توسط سایتهای دیگر ارائه میدهید، یک CORP یکپارچهی ‘same-origin’ آنها را بلاک میکند.
- اشتباه گرفتن اینها با قفل SSL. HTTPS اتصال را رمزگذاری میکند؛ اینها تعامل cross-site را کنترل میکنند.
یادداشتی دربارهی نمره
صریح بگوییم: هیچکدام از این سه بررسی نمرهی شما را تحت تأثیر قرار نمیدهند. آنها به عنوان اطلاعاتی، با صفر امتیاز ثبت شدهاند. اگر دو تای امن را اضافه کنید، چند شکاف واقعی (اگرچه نادر) را رایگان بستهاید. این راه درستی برای فکر کردن به این صفحه است: صیقل اختیاری، با یک تلهی بهوضوح برچسبگذاری شده برای اجتناب.
پرسشهای متداول
اینها نمرهی من را تحت تأثیر قرار نمیدهند — آیا اصلاً زحمت بکشم؟
دو تا از آنها، بله؛ یکی، احتمالاً نه. COOP و CORP رایگان هستند، چند دقیقه طول میکشند، و سایت شما را نمیشکنند — مسیرهای حملهای واقعی (اگرچه نادر) میبندند، پس ارزش انجام دادن به عنوان بهداشت ارزان را دارند. COEP پیشرفته است و میتواند ابزارهای شخص ثالث را بشکند، پس اکثر کسبوکارها باید آن را خاموش بگذارند مگر اینکه خاصتاً به ویژگیهای مرورگر که آن را باز میکند نیاز داشته باشند. هیچکدام از سه تا نمرهی شما را تغییر نمیدهند، پس فوریتی وجود ندارد — دو تای امن را به عنوان یک مرتبسازی دهید، دفعهی بعدی که توسعهدهندهی شما در سایت است.
من تکنیکی نیستم — آیا این چیزی است که باید خودم انجام دهم؟
نه شخصاً، و نه فوری. چون اینها اطلاعاتی هستند، اگر آنها را رد کنید هیچ اتفاق بدی برای نمرهی شما نمیافتد. اگر میخواهید دو تای امن را اضافه کنید، بخش 'چگونه آن را رفع کنیم' را به هر کسی که وبسایت یا CDN شما را مدیریت میکند بدهید — چند تنظیم یکخطی است و رفع رایگان است. تنها یکی که باید صریحاً علامتگذاری کنید COEP است: به آنها بگویید بدون آزمایش آن را روشن نکنند.
تفاوت بین اینها و header هایی که واقعاً نمرهی من را تحت تأثیر قرار میدهند چیست؟
Header های امنیت وب نمرهگذاری شده — تغییر مسیر HTTPS، HSTS، Content-Security-Policy، محافظت clickjacking (X-Frame-Options)، و محافظت MIME-sniffing — در برابر حملات رایج و بهطور گسترده مورد بهرهبرداری قرار گرفته دفاع میکنند، پس نداشتنشان امتیاز کم میکند. سه تای این صفحه (COOP، CORP، COEP) کنترلهای isolation مرورگر جدیدتر و تخصصیتر هستند. بهترین روش هستند اما هنوز انتظار پایه نیستند، پس ما آنها را بدون نمرهگذاری گزارش میدهیم.
آیا اضافه کردن COOP یا CORP وبسایت یا یکپارچگیهای شریکانم را میشکند؟
تنظیمات توصیه شده (هر دو 'same-origin') طراحی شدهاند که امن باشند. COOP فقط لینک به پنجرههایی که سایت شما در popup باز میکند را قطع میکند — مرور عادی، صفحات خودتان، و لینکهای معمولی تحت تأثیر قرار نمیگیرند. CORP فقط از تعبیه کردن تصاویر و اسکریپتهای شما توسط *سایتهای دیگر* جلوگیری میکند؛ سایت خودتان منابع خودش را دقیقاً مثل قبل بارگذاری میکند. اگر واقعاً asset های (مثل یک لوگوی عمومی یا API) که سایتهای دیگر باید تعبیه کنند دارید، توسعهدهندهی شما میتواند از یک تنظیم permissiveتر روی آن پاسخهای خاص استفاده کند. یکی که واقعاً ریسک شکستگی دارد COEP است — آن را خاموش نگه دارید مگر اینکه آزمایش شده باشد.
'hotlinking' واقعاً چه هزینهای برای من دارد؟
وقتی سایت دیگری تصویر یا اسکریپت شما را مستقیم از سرور شما به جای هاست کردن نسخهی خودشان تعبیه میکند، هر بازدیدکنندهی سایتشان آن را از شما دانلود میکند — از قبض پهنای باند شما، و asset شما را در زمینهای که تأیید نکردید نشان میدهد. برای یک کسبوکار کوچک به ندرت فاجعهآمیز است، اما پول رایگان بیرون از در است، و CORP ('same-origin') آن را در سطح مرورگر متوقف میکند.
'خوب' برای هر کدام از اینها چه شکلی است؟
COOP: یک header Cross-Origin-Opener-Policy تنظیم شده روی 'same-origin'. CORP: یک header Cross-Origin-Resource-Policy تنظیم شده روی 'same-origin'. COEP: یک header Cross-Origin-Embedder-Policy — و اگر اصلاً آن را تنظیم کنید، 'credentialless' مقدار امنتر نسبت به 'require-corp' است. گزارش ما به سادگی یادداشت میکند آیا هر کدام حاضر است و روی چه چیزی تنظیم شده؛ هرگز شما را برای یک گمشده جریمه نمیکند.