هنگام تعامل با پنجرههای بازشو، ایزولهسازی متقاطع و محافظت در برابر نشت بین سایتی را دریافت کنید.
یک مقدار جدید برای Cross-Origin Opener Policy (COOP) در دسترس است: restrict-properties
. مزایای امنیتی به ارمغان میآورد و استفاده از انزوا با مبدا متقاطع را آسانتر میکند و به سایت شما اجازه میدهد با پنجرههای بازشو شخص ثالث برای پرداختها، احراز هویت یا موارد استفاده دیگر تعامل داشته باشد.
برای شروع آزمایش با restrict-properties
در نسخه آزمایشی اصلی که در Chrome 116 شروع میشود، شرکت کنید.
چرا از restrict-properties
استفاده کنیم؟
restrict-properties
دو مورد استفاده اصلی دارد:
- جلوگیری از نشت های متقاطع بدون شکستگی.
- ایزوله کردن سایت خود با مبدا متقابل .
از نشت های متقاطع بدون شکستگی جلوگیری کنید
بهطور پیشفرض، هر وبسایتی میتواند برنامه شما را در پنجره بازشو باز کند و به آن مرجع دریافت کند.
یک وب سایت مخرب می تواند از این به نفع خود برای انجام حملاتی مانند نشت بین سایتی استفاده کند. برای کاهش این خطر، می توانید از سربرگ Cross-Origin-Opener-Policy
(COOP) استفاده کنید.
تا به حال، گزینه های شما برای Cross-Origin-Opener-Policy
محدود بود. شما می توانید یا:
-
same-origin,
که تمام تعاملات متقابل مبدا با پنجرههای بازشو را مسدود میکند. -
same-origin-allow-popups
را تنظیم کنید، که تمام تعاملات متقاطع که سایت شما را در یک پنجره باز میکنند مسدود میکند. -
unsafe-none
را تنظیم کنید، که به همه تعاملات متقاطع با پنجرههای بازشو اجازه میدهد.
این امر باعث میشود تا وبسایتهایی که باید در یک پنجره باز شوند و با بازکننده خود برای اجرای COOP تعامل داشته باشند، غیرممکن شود. این باعث شد موارد استفاده کلیدی مانند ورود به سیستم و پرداختها در برابر نشت بین سایتی محافظت نشود.
Cross-Origin-Opener-Policy: restrict-properties
این مشکل را حل می کند.
با restrict-properties
، ویژگیهایی که میتوانند برای شمارش فریم و سایر حملات نشت بین سایتی مورد استفاده قرار گیرند، در دسترس نیستند - اما ارتباط اولیه بین پنجرهها از طریق postMessage
و closed
مجاز است.
این امنیت سایت را در عین حفظ موارد استفاده کلیدی بهبود می بخشد. به عنوان مثال:
- اگر سرویسی را در یک پنجره بازشو ارائه میکنید، تنظیم
Cross-Origin-Opener-Policy: restrict-properties
از شما در برابر طیف وسیعی از حملات نشت بین سایتی محافظت میکند. همچنان می توانید تمام صفحاتی را که قبلاً می توانستید باز کنید باز کنید. - اگر نیاز به دسترسی به یک پنجره بازشوی متقاطع دارید، تنظیم
Cross-Origin-Opener-Policy: restrict-properties
به طور مشابه از سایت شما در برابر شمارش iframe محافظت می کند. شما می توانید همان مجموعه ای از پنجره های بازشو را باز کنید که امروز می توانید باز کنید. - اگر هم بازکننده و هم openee سرصفحه را تنظیم کنند، و صفحات دارای منبع متقاطع باشند، رفتاری مشابه با یکی از آنها که هدر را تنظیم کرده است، دارد. اگر منشا یکسانی داشته باشند، دسترسی کامل داده می شود.
سایت خود را از مبدا متقاطع ایزوله کنید
چرا ما به جداسازی متقاطع نیاز داریم؟
برخی از API های وب خطر حملات کانال جانبی مانند Spectre را افزایش می دهند. برای کاهش این خطر، مرورگرها یک محیط ایزوله مبتنی بر انتخاب به نام انزوا با مبدا متقابل را ارائه می دهند. با حالت ایزوله با مبدا متقاطع، صفحه وب میتواند از ویژگیهای ممتاز از جمله SharedArrayBuffer ، performance.measureUserAgentSpecificMemory() و تایمرهای با دقت بالا با وضوح بهتر استفاده کند، در حالی که مبدا را از سایرین جدا میکند، مگر اینکه در آن شرکت کرده باشند.
تا به حال، برای استفاده از این APIها، باید Cross-Origin-Opener-Policy: same-origin
را تنظیم میکردید. با این حال، این کار هر جریان بازشوی متقابلی را که ممکن است به آن نیاز داشته باشید، مانند ورود به سیستم و پرداختها، از بین میبرد.
Cross-Origin-Opener-Policy: restrict-properties
به جای Cross-Origin-Opener-Policy: same-origin
برای فعال کردن جداسازی متقاطع استفاده کرد. به جای قطع رابطه بازکننده، آن را صرفاً به زیرمجموعه حداقل ارتباطی window.postMessage()
و window.closed
محدود می کند.
شما می توانید با دو سرصفحه زیر، جداسازی مبدا متقاطع را فعال کنید:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
یا
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
در بارگیری منابع متقاطع بدون سرصفحه CORP با استفاده از COEP: credentialless
در مورد credentialless
بیشتر بیاموزید.
نسخه ی نمایشی
گزینه های مختلف سرصفحه را در این نسخه نمایشی جداسازی با مبدا متقابل امتحان کنید.
آزمایش با مبدا
برای آزمایش با Cross-Origin-Opener-Policy: restrict-properties
، آزمایش مبدا را انتخاب کنید.
پشتیبانی از مرورگر
Cross-Origin-Opener-Policy: restrict-properties
در حال حاضر فقط در Chrome پشتیبانی می شود. مرورگرهای دیگر به طور فعال در بحث استانداردسازی شرکت دارند.
سوالات متداول
وب سایت من باید با پنجره های بازشو با همان مبدا ارتباط برقرار کند، آیا باید از COOP: restrict-properties
برای فعال کردن جداسازی مبدا متقابل استفاده کنم؟
تنظیم COOP: restrict-properties
در پنجره بازشو و صفحه اصلی شما محدودیت ایجاد نمی کند. تنظیم آن فقط در پنجره بازشو یا فقط در صفحه اصلی از هرگونه دسترسی به ویژگیهایی غیر از postMessage
و closed
در سراسر بازکننده جلوگیری میکند، حتی اگر آنها از یک منبع باشند.
آیا مجموعه خواص مجاز ثابت است؟
بر اساس بازخورد تا کنون، window.postMessage
و window.closed
گمان میرود که برای اکثر گردشهای کاری کافی باشند، اما ما همچنان در حال بررسی باز کردن آن برای سایر ویژگیها هستیم. اگر موردی دارید که فقط با استفاده از postMessage
قابل حل نیست و closed
، بازخورد خود را در موضوع Intent to Experiment بگذارید.
منابع
- با استفاده از COOP و COEP وبسایت خود را «منشأ متقاطع ایزوله» کنید
- چرا برای ویژگیهای قدرتمند به «منشا متقاطع جدا شده» نیاز دارید
- راهنمای فعال کردن جداسازی با مبدا متقابل
- بهروزرسانیهای SharedArrayBuffer در Android Chrome 88 و Desktop Chrome 92
- بارگیری منابع متقاطع بدون سرصفحه CORP با استفاده از
COEP: credentialless
- Chrome Developers - آزمایش اولیه iframe ناشناس: iframe ها را به راحتی در محیط های COEP جاسازی کنید - توسعه دهندگان Chrome