Defaults.Exposed

Defaults.Exposedرفع اشکال‌ها › Cross-origin isolation headers (COOP / CORP / COEP)

چطور Cross-origin isolation headers (COOP / CORP / COEP) را رفع کنید

سه دستورالعمل اختیاری مرورگر که کنترل می‌کنند سایت‌های دیگر چگونه مجاز هستند با سایت شما تعامل داشته باشند — باز کردن آن در popup ها، تعبیه کردن تصاویر و اسکریپت‌هایش، یا کشیدن منابعش به صفحات خودشان. آن‌ها سختگیری مدرن هستند، نه یک الزام اساسی، و در نمره‌گذاری ما اطلاعاتی هستند: نداشتنشان نمره‌ی شما را پایین نمی‌آورد. اما دو تای امن آن‌ها یک شکاف فیشینگ popup آرام و سرقت پهنای باند را می‌بندند، و تیم IT یک خریدار دقیق متوجه حضورشان می‌شود.

نتیجه نهایی برای کسب‌وکار شما: دو تا از این سه header فیشینگ popup پیشرفته را خاموش می‌کنند و از تعبیه کردن مستقیم تصاویر و اسکریپت‌های شما توسط سایت‌های دیگر جلوگیری می‌کنند (که پهنای باند شما را هزینه می‌کند و می‌تواند داده نشت دهد). رایگان هستند، حدود ۱۵ دقیقه از وقت توسعه‌دهنده می‌گیرند، و چیزی نمی‌شکنند. سومی پیشرفته است و می‌تواند analytics، فونت‌ها و embed ها را بشکند — اکثر کسب‌وکارها باید آن را خاموش بگذارند. هیچ‌کدام از آن‌ها نمره‌ی شما را تغییر نمی‌دهند، پس آن‌ها را به عنوان صیقل دهی، نه وحشت، تلقی کنید: دو تای امن را انجام دهید، یکی پرریسک را رد کنید مگر اینکه خاصتاً به آن نیاز داشته باشید.

هزینه این برای شما

چرا اهمیت دارد. اینها header های سختگیری مرورگر آینده‌نگر هستند. در روش‌شناسی ما هر سه اطلاعاتی هستند — با صفر امتیاز ثبت شده‌اند و هرگز نمره‌ی شما را جابجا نمی‌کنند — چون کنترل‌های پیشرفته‌ای هستند که یک سایت می‌تواند بدون آن‌ها به طور مشروع کار کند، و یکی از آن‌ها اگر به اشتباه اعمال شود می‌تواند آسیب برساند. ما روی آن‌ها گزارش می‌دهیم تا بتوانید ببینید کجا قرار دارید. دو تای امن (COOP و CORP) واقعاً ارزش اضافه کردن دارند: رایگان، سریع، و شکاف‌های واقعی فیشینگ popup و سرقت منابع را بدون شکستن چیزی می‌بندند.

این چیست، به زبان ساده

وقتی کسی از وب‌سایت شما بازدید می‌کند، مرورگرشان نه فقط صفحات شما را در isolation بارگذاری می‌کند — بلکه همچنین تصمیم می‌گیرد سایت‌های دیگر چگونه مجاز هستند با سایت شما تعامل داشته باشند. آیا سایت دیگری می‌تواند سایت شما را در یک popup باز کند و آن را حفظ کند؟ آیا سایت دیگری می‌تواند تصاویر و اسکریپت‌های شما را در صفحات خودشان تعبیه کند؟

این سه header دستورالعمل‌های کوتاه و نامرئی هستند که وب‌سایت شما به مرورگر هر بازدیدکننده می‌فرستد تا دقیقاً به این سؤالات پاسخ دهد. با حروف اختصاری‌شان شناخته می‌شوند:

دو تا از آن‌ها (COOP و CORP) برای اضافه کردن امن هستند و واقعاً مفید. سومی (COEP) پیشرفته است و اگر بدون مراقبت روشن شود می‌تواند چیزها را بشکند.

مهم‌ترین چیز برای دانستن: در نمره‌گذاری ما، هر سه اطلاعاتی هستند. نمره‌ی شما را تحت تأثیر قرار نمی‌دهند. یک گمشده هیچ هزینه‌ای ندارد.

این چقدر ممکن است برای شما هزینه داشته باشد

اینها ریسک‌های خاص هستند، نه ریسک‌های اصلی — اما واقعی هستند، و رفع‌ها رایگان هستند.

هر کدام واقعاً چیست

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:

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 استفاده کنید — احتمال شکستن منابع خارجی کمتر است.

اشتباهات رایج

یادداشتی درباره‌ی نمره

صریح بگوییم: هیچ‌کدام از این سه بررسی نمره‌ی شما را تحت تأثیر قرار نمی‌دهند. آن‌ها به عنوان اطلاعاتی، با صفر امتیاز ثبت شده‌اند. اگر دو تای امن را اضافه کنید، چند شکاف واقعی (اگرچه نادر) را رایگان بسته‌اید. این راه درستی برای فکر کردن به این صفحه است: صیقل اختیاری، با یک تله‌ی به‌وضوح برچسب‌گذاری شده برای اجتناب.

پرسش‌های متداول

اینها نمره‌ی من را تحت تأثیر قرار نمی‌دهند — آیا اصلاً زحمت بکشم؟

دو تا از آن‌ها، بله؛ یکی، احتمالاً نه. 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' است. گزارش ما به سادگی یادداشت می‌کند آیا هر کدام حاضر است و روی چه چیزی تنظیم شده؛ هرگز شما را برای یک گمشده جریمه نمی‌کند.