توسعه دهندگانی که از COEP استفاده می کنند اکنون می توانند iframe های شخص ثالثی را که خودشان از COEP استفاده نمی کنند جاسازی کنند.
Iframe credentialless بهطور پیشفرض از Chrome نسخه 110 فعال است. شایعترین شکایتهایی را که توسعهدهندگانی که با Cross-Origin-Embedder-Policy (COEP) کار میکنند، حل میکند: جاسازی iframeهای شخص ثالث که COEP را تنظیم نمیکنند.
چرا ما به COEP نیاز داریم
برخی از APIهای وب خطر حملات کانال جانبی مانند Spectre را افزایش می دهند. برای کاهش این خطر، مرورگرها یک محیط ایزوله مبتنی بر انتخاب به نام انزوا با مبدا متقابل را ارائه میدهند که به استقرار COEP نیاز دارد. جداسازی با مبدا متقابل به وبسایتها اجازه میدهد از ویژگیهای ممتاز از جمله SharedArrayBuffer
، performance.measureUserAgentSpecificMemory()
و تایمرهای با دقت بالا با وضوح بهتر استفاده کنند.
برای فعال کردن جداسازی مبدا متقاطع، وبسایتها باید سرصفحههای HTTP زیر را ارسال کنند:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:credentialless همچنین می تواند به عنوان جایگزینی برای require-corp
استفاده شود. برای جزئیات بیشتر به مستندات مراجعه کنید.
چالشها با فعال کردن COEP
در حالی که انزوا با مبدا متقاطع امنیت بیشتری را برای صفحات وب به ارمغان می آورد و توانایی فعال کردن ویژگی های قدرتمند را دارد، استقرار COEP می تواند دشوار باشد. یکی از بزرگترین چالش ها این است که همه iframe های متقاطع باید از COEP و CORP استفاده کنند. آی فریم های بدون آن هدرها توسط مرورگر بارگیری نمی شوند.
بدون اعتبار اگر فریم را نجات دهید
ما <iframe credentialless>
را برای کمک به جاسازی iframe های شخص ثالثی که COEP را تنظیم نمی کنند، معرفی می کنیم. با افزودن ویژگی credentialless
به عنصر <iframe>
، iframe از یک زمینه متفاوت و خالی بارگیری می شود. به ویژه، بدون کوکی بارگیری می شود. این اجازه می دهد تا محدودیت COEP را حذف کنید.
مثال:
<iframe credentialless src="https://example.com">
این iframe در یک زمینه زودگذر جدید ایجاد شده است و به هیچ یک از کوکی های مرتبط با وب سایت سطح بالا دسترسی ندارد. در عوض، با یک ظرف کوکی خالی شروع می شود. به همین ترتیب، API های ذخیره سازی مانند LocalStorage ، CacheStorage ، IndexedDB ، و غیره، داده ها را در پارتیشن زودگذر جدید بارگیری و ذخیره می کنند. محدوده پارتیشن هم به سند سطح بالای فعلی و هم مبدا iframe است. پس از بارگیری سند سطح بالا، تمام این فضای ذخیره سازی پاک می شود.
iframe های بدون اعتبار مشمول قوانین تعبیه COEP نیستند. آنها هنوز امن هستند: چون هر بار از یک زمینه خالی جدید بارگیری می شوند، نباید حاوی داده های شخصی شده باشند، چیزی که مهاجمان به دنبال آن هستند. اگر یک iframe فقط حاوی داده های عمومی باشد، برای یک مهاجم ارزشی ندارد.
نسخه ی نمایشی
می توانید نسخه ی نمایشی یک iframe بدون اعتبار را بررسی کنید.
سوالات متداول
آیا این ویژگی توسط سایر مرورگرها پذیرفته می شود؟
- درخواست موزیلا برای موقعیت: در انتظار
- Webkit درخواست موقعیت: بدون سیگنال
- W3C TAG درخواست برای موقعیت: راضی شد
آیا یک <iframe>
داخل یک <iframe credentialless>
بدون اعتبار است؟
بله. ارثی است. هنگامی که یک iframe بدون اعتبار باشد، این امر برای همه iframe ها در کل زیردرخت حتی بدون ویژگی credentialless
اعمال می شود.
آیا پاپ آپ ها از <iframe credentialless>
نیز بدون اعتبار ایجاد می شوند؟
پاپآپها طوری باز میشوند که گویی noopener
تنظیم شده است. آنها در یک بافت سطح بالای منظم جدید ایجاد می شوند و بدون اعتبار نیستند. آنها نمی توانند با iframe بدون اعتبار ارتباط برقرار کنند.
چگونه تشخیص دهیم که سند در یک iframe بدون اعتبار جاسازی شده است؟
window.credentialless
در داخل iframe بدون credentialless درست است و در غیر این صورت false است. مقدار آن در یک مرورگر وب که <iframe credentialless>
پشتیبانی نمی کند، undefined
است.
منابع
- با استفاده از COOP و COEP وبسایت خود را "مبدأ متقاطع ایزوله" کنید
- چرا برای ویژگیهای قدرتمند به «منشا متقاطع جدا شده» نیاز دارید
- راهنمای فعال کردن جداسازی با مبدا متقابل
- بهروزرسانیهای SharedArrayBuffer در Android Chrome 88 و Desktop Chrome 92
- بارگیری منابع متقاطع بدون سرصفحه CORP با استفاده از
COEP: credentialless
- IFrame credentialless - امنیت وب | MDN