Google Central Search درباره پیامی گیج کننده که هفته گذشته توسط کنسول جستجوی Google درباره مشکلات SharedArrayBuffer ارسال شده بود ، توضیحاتی را صادر کرد. Google همچنین راهنمای خود را برای راهنمای فعال کردن انزوا از مبدا به روز کرده است.
SharedArrayBuffer چیست؟
SharedArrayBuffer ، به زبان ساده ، روش های عملکرد پشت صحنه JavaScript است که به آنها کمک می کند وظایف خود را به روشی کارآمد انجام دهند.
بر اساس مستندات کارگران وب Mozilla:
“Web Workers ابزاری ساده برای محتوای وب برای اجرای اسکریپت در زمینه های پس زمینه است.”
و به گفته دیگری صفحه توسعه دهنده موزیلا:
“با SharedArrayBuffer ، هر دو وب کارگر ، هر دو رشته ، می توانند داده ها را بنویسند و از یک قسمت حافظه بخوانند.”
حافظه از آن جهت مهم است که جاوا اسکریپت با حافظه مرورگر کار می کند و اگر صفحه به خوبی از پس آن برآید ، می تواند منجر به عواقب ناخواسته ای مانند نفخ حافظه شود.
تبلیغات
ادامه مطلب را در زیر بخوانید
صفحه توسعه دهنده موزیلا بیشتر توضیح می دهد:
“ArrayBuffers به شما راهی می دهد تا بتوانید برخی از داده های خود را به صورت دستی مدیریت کنید ، حتی اگر در JavaScript کار می کنید ، که دارای مدیریت خودکار حافظه است.
… در یک برنامه معمولی ، همه کارها توسط یک شخص انجام می شود – موضوع اصلی.
… و تحت شرایط خاص ، ArrayBuffers می تواند مقدار کاری را که رشته اصلی باید انجام دهد کاهش دهد. “
در ادامه توضیح داده می شود که گاهی اوقات تقسیم کار کافی نیست و در اینجاست که کارگران وب فوق الذکر وارد عمل می شوند و همان قسمت حافظه را تقسیم می کنند.
مارتین اسپلیت از گوگل در سال 2017 اینطور خلاصه کرد هنگامی که SharedArrayBuffers یکی از ویژگی های آینده بود:
“جاوا اسکریپت اسکریپت های تک رشته ای است و طولانی مدت صفحه را بی پاسخ می کند
Web Workers اجازه می دهد JavaScript را در رشته های جداگانه اجرا کنید و با موضوع اصلی با استفاده از پیام ارتباط برقرار کنید.
پیام هایی که مقدار زیادی داده را در TypedArrays یا ArrayBuffers منتقل می کنند ، به دلیل کلون شدن داده ها ، باعث افزایش حافظه می شوند.
… SharedArrayBuffers یکی از ویژگی های آینده است که اجازه می دهد داده ها بین رشته ها به اشتراک گذاشته شود. “
تبلیغات
ادامه مطلب را در زیر بخوانید
چرا پیام SharedArrayBuffer را دریافت کردید
وبلاگ جستجوی مرکزی گوگل توضیح می دهد که دلیل آنکه ناشران پیام “مرموز” را دریافت کرده اند به دلیل وجود چیزی در صفحات وب آنها استفاده از SharedArrayBuffers است که یک ترفند رمزگذاری برای سرعت بخشیدن به فرآیندهای JavaScript است.
به گفته گوگل:
“این استفاده ممکن است به دلیل چارچوب ها ، کتابخانه ها یا سایر محتوای شخص ثالث موجود در وب سایت شما باشد.”
چرا SharedArrayBuffer (SAB) یک مشکل است؟
SAB ها بعد از کشف آسیب پذیری Spectre و Meltdown.
این آسیب پذیری ها بر تمام واحدهای پردازش رایانه (CPU) تأثیر می گذارد و به مهاجم اجازه می دهد آنچه را که در حافظه است بخواند. این حمله همه دستگاههای رایانه ای از جمله دستگاههای اینترنت اشیا را تحت تأثیر قرار می دهد.
Chrome در ابتدا استفاده از SAB را به حالت تعلیق درآورد اما پس از یک راه حل که اساساً فرآیندها را جدا می کند ، دوباره اجازه استفاده از آنها را داد.
Chrome و Firefox نحوه رسیدگی به بافرهای SharedArray را تغییر می دهند
دلیل این ایمیل تلاش برای اطلاع رسانی در مورد نحوه کار کردن Chrome با SharedArrayBuffers و کمک به ناشران برای پردازش هایی است که باعث امن تر شدن سایت و بازدیدکنندگان سایتشان می شود.
در اواخر ماه مه 2021 ، Chrome 91 با محدودیت جدیدی ارائه می شود که دفاع محکم تری در برابر آسیب پذیری های Spectre و Meltdown ارائه می دهد.
“متقابل”اشاره به منابعی است (مانند تصاویر ، پرونده های CSS و JavaScript) که از خارج از سایت منشا می گیرند.
آنچه در Chrome 91 اتفاق می افتد و آنچه که گوگل به آن نیاز دارد تنظیم سیاست های امنیتی در مورد منابع و در واقع قفل کردن مواردی است که طبق سیاست های Chrome (و Firefox) برای محافظت از بازدید کنندگان و ناشران سایت در برابر آسیب پذیری های Spectre مجاز است.
این برای بازدیدکنندگان سایت خوب است اما برای ناشران سایت که از اشیا Sha SharedArrayBuffer بدون جداسازی ریشه متقابل استفاده می کنند ، می تواند بد باشد.
طبق توضیحات Google (اشاره به Chrome نسخه 91):
“… جداسازی متقابل به عنوان راهی برای فعال کردن ایمن شی SharedArrayBuffer استاندارد شد. با شروع نسخه 91 ، برنامه ریزی شده برای انتشار در اواخر ماه مه سال 2021 ، Chrome شی SharedArrayBuffer را در پشت جداسازی متقابل قرار خواهد داد.
… بعد از انتشار Chrome 91 ، شی SharedArrayBuffer بدون جداسازی ریشه متقابل دیگر کاربردی نخواهد بود. “
تبلیغات
ادامه مطلب را در زیر بخوانید
کاری که باید برای رفع مشکل SharedArrayBuffer انجام دهید
دو وظیفه وجود دارد که باید انجام شود.
- استفاده از SAB را در وب سایت خود شناسایی کنید.
- عملکرد را برطرف یا حذف کنید
شناسایی کاربرد SAB
Google این مراحل را برای شناسایی SharedArrayBuffers توصیه می کند:
“شما دو گزینه دارید:
استفاده کنید Chrome DevTools و صفحات مهم را بازبینی کنید.
(پیشرفته) از گزارش API برای ارسال گزارش های استهلاک به یک نقطه پایانی گزارش
بیاموزید که چگونه روشهای فوق را در پیش بگیرید مشخص کنید که SharedArrayBuffer در کجای وب سایت شما استفاده شده است“
راهنمای Google برای پیشنهادات منزوی متقابل دستورالعمل استفاده از Chrome Dev Tools برای شناسایی استفاده از SharedArrayBuffers.
- “Chrome DevTools را در صفحه ای که احتمال می دهید از SharedArrayBuffer استفاده می کند باز کنید.
- پنل کنسول را انتخاب کنید.
- اگر صفحه از SharedArrayBuffer استفاده می کند ، پیام زیر نمایش داده می شود:
[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. common-bundle.js:535- نام پرونده و شماره خط در انتهای پیام (به عنوان مثال ، common-bundle.js: 535) نشان می دهد که SharedArrayBuffer از کجا آمده است. اگر کتابخانه شخص ثالث است ، برای رفع این مشکل با توسعه دهنده تماس بگیرید. اگر به عنوان بخشی از وب سایت شما اجرا شده است ، راهنمای زیر را دنبال کنید تا جداسازی ریشه ای را فعال کنید. “
تبلیغات
ادامه مطلب را در زیر بخوانید
ارتباط دادن: چگونه می توان جداسازی متقابل را فعال کرد
چیزهای زیادی برای استفاده
این خیلی چیزها است که باید بپذیرید زیرا یک مقدار قابل توجهی از اصطلاحات و کلمات اختصاری توسعه برای حفظ وجود دارد.
درک صفحات مختلف توسعه دهنده دشوار است زیرا آنها تمایل دارند چندین کلمه اختصاری را در ابتدای 2000 مقاله کلمه ای تعریف کنند ، سپس به طور خلاصه به اختصار بدون هیچ توضیح بیشتر در طول مقاله مراجعه می کنند ، انگار خواننده قادر است به راحتی معنای COEP یا کوپ
استناد
توضیحات رسمی گوگل:
توضیحات درباره پیام شی SharedArrayBuffer
منبع اطلاعات پیش زمینه هدر امنیتی: ScottHelme.co.uk
COEP COOP CORP CORS CORB – CRAP این چیزهای جدیدی است!
صفحه توسعه دهنده Mozilla درباره اینکه SharedArrayBuffers چیست:
معرفی کارتون برای ArrayBuffers و SharedArrayBuffers
صفحه توسعه دهنده Google در مورد تجزیه و تحلیل انزوا از مبدا
راهنمای تجزیه و تحلیل جداسازی متقابل
صفحه توسعه دهنده Google در مورد امکان انزوای متقابل
چگونه می توان جداسازی Cross-Origin را فعال کرد