تعاملات بازشو ایمن با ویژگی های محدود

هنگام تعامل با پنجره‌های بازشو، ایزوله‌سازی متقاطع و محافظت در برابر نشت بین سایتی را دریافت کنید.

Arthur Hemery
مود نالپاس
Maud Nalpas

یک مقدار جدید برای 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 بگذارید.

منابع