آزمایش مبدا iframe ناشناس: iframe ها را به راحتی در محیط های COEP جاسازی کنید

آرتور سونزوگنی
Arthur Sonzogni

توسعه دهندگانی که از COEP استفاده می کنند اکنون می توانند iframe های شخص ثالثی را که خودشان از COEP استفاده نمی کنند جاسازی کنند.

چرا ما به COEP نیاز داریم

برخی از APIهای وب خطر حملات کانال جانبی مانند Spectre را افزایش می دهند. برای کاهش این خطر، مرورگرها یک محیط ایزوله مبتنی بر انتخاب به نام انزوا با مبدا متقابل را ارائه می دهند که از جمله موارد دیگر، مستلزم استقرار COEP است. این به وب‌سایت‌ها اجازه می‌دهد از ویژگی‌های ممتاز از جمله SharedArrayBuffer ، performance.measureUserAgentSpecificMemory() و تایمرهای با دقت بالا با وضوح بهتر استفاده کنند.

برای فعال کردن جداسازی مبدا متقاطع، وب‌سایت‌ها باید دو عنوان HTTP زیر را ارسال کنند:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

چالش‌ها با فعال کردن COEP

در حالی که انزوا با مبدا متقاطع امنیت بیشتری را برای صفحات وب به ارمغان می آورد و توانایی فعال کردن ویژگی های قدرتمند را دارد، استقرار COEP می تواند دشوار باشد. یکی از بزرگ‌ترین چالش‌ها این است که همه iframe‌های متقاطع نیز باید COEP و CORP را مستقر کنند. Iframes بدون آن هدرها توسط مرورگر بارگیری نمی‌شوند.

iframe ها معمولاً توسط شخص ثالثی ارائه می شوند که ممکن است به کارگیری COEP برای آنها آسان نباشد.

iframe ناشناس برای نجات

اینجاست که iframe ناشناس وارد می‌شود. با افزودن ویژگی anonymous به عنصر <iframe> ، iframe از یک پارتیشن ذخیره‌سازی زودگذر متفاوت بارگیری می‌شود و دیگر مشمول محدودیت‌های COEP نمی‌شود.

مثال:

<iframe anonymous src="https://example.com">

Iframe در یک زمینه زودگذر جدید ایجاد شده است و به هیچ یک از کوکی های مرتبط با وب سایت سطح بالا دسترسی ندارد. از یک ظرف خالی کوکی شروع می شود. به همین ترتیب، API های ذخیره سازی مانند LocalStorage ، CacheStorage ، IndexedDB و غیره، داده ها را در پارتیشن زودگذر جدید بارگیری و ذخیره می کنند. محدوده پارتیشن به سند سطح بالای فعلی و مبدا iframe است. پس از بارگیری سند سطح بالا، فضای ذخیره سازی پاک می شود.

iframe های ناشناس مشمول قوانین تعبیه COEP نیستند. این هنوز امن است، زیرا آنها هر بار از یک زمینه خالی جدید بارگیری می شوند. آنها بدون شخصی سازی اطلاعات آنها بارگیری می شوند. آنها فقط حاوی داده های عمومی هستند که برای یک مهاجم ارزشمند نیستند.

نسخه ی نمایشی

می توانید یک iframe ناشناس را در آدرس زیر بررسی کنید: https://anonymous-iframe.glitch.me/

برای آزمایش اولیه ثبت نام کنید

برای اطمینان از اینکه iframes های Anonymous به توسعه دهندگان کمک می کند تا جداسازی مبدا متقاطع را اتخاذ کنند، آنها را در Chrome از نسخه 106 تا 108 به عنوان نسخه آزمایشی اصلی در دسترس قرار می دهیم.

برای فعال کردن وب سایت خود برای استفاده از iframes های ناشناس برای آزمایش اصلی ثبت نام کنید:

  1. برای مبدا خود یک نشانه درخواست کنید .
  2. از توکن به یکی از روش های زیر استفاده کنید:
    • در HTML شما: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • در جاوا اسکریپت: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • در سرصفحه های HTTP: text Origin-Trial: TOKEN_GOES_HERE
  3. یک iframe ناشناس به صفحه خود اضافه کنید: html <iframe anonymous src="https://example.com">

اگر بازخوردی در مورد این ویژگی دارید، مشکلی را در مخزن GitHub ثبت کنید.

کارآزمایی منشا شخص ثالث

نسخه آزمایشی اصلی برای اسکریپت های شخص ثالث نیز در دسترس است. این بدان معنی است که می توان آن را با اسکریپت های تعبیه شده در صفحه فعال کرد.

Leran درباره نحوه ثبت نام برای آزمایش اولیه شخص ثالث بیشتر است.

سوالات متداول

آیا این ویژگی توسط سایر مرورگرها پذیرفته می شود؟

آیا iframe های تو در تو در <iframe anonymous> ناشناس هستند؟

آره. ارثی است. هنگامی که یک iframe ناشناس است، برای همه iframe ها در کل زیردرخت حتی بدون ویژگی anonymous اعمال می شود.

آیا پاپ آپ های ایجاد شده از <iframe anonymous> نیز ناشناس هستند؟

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

منابع