درخواست مجوز جدید برای دسترسی به شبکه محلی

کریس تامپسون
Chris Thompson

تاریخ انتشار: 9 ژوئن 2025

Chrome در حال اضافه کردن یک درخواست مجوز جدید برای سایت‌هایی است که به شبکه محلی کاربر به عنوان بخشی از پیش‌نویس مشخصات دسترسی به شبکه محلی متصل می‌شوند. هدف محافظت از کاربران در برابر حملات جعل درخواست متقابل (CSRF) است که مسیریاب‌ها و سایر دستگاه‌ها را در شبکه‌های خصوصی هدف قرار می‌دهند و توانایی سایت‌ها برای استفاده از این درخواست‌ها برای اثر انگشت شبکه محلی کاربر را کاهش می‌دهد.

برای درک اینکه این تغییر چگونه بر اکوسیستم وب تأثیر می‌گذارد، تیم Chrome به دنبال بازخورد از توسعه‌دهندگانی است که برنامه‌های وب را ایجاد می‌کنند که به ایجاد اتصال به شبکه محلی کاربر یا نرم‌افزاری که به صورت محلی روی دستگاه کاربر اجرا می‌شود، متکی است. از Chrome 138، می‌توانید با رفتن به chrome://flags/#local-network-access-check و تنظیم پرچم روی «Enabled (Blocking)» در این محدودیت‌های جدید شرکت کنید.

دسترسی به شبکه محلی چیست؟

دسترسی به شبکه محلی توانایی وب سایت ها را برای ارسال درخواست به سرورهای موجود در شبکه محلی کاربر (از جمله سرورهایی که به صورت محلی بر روی دستگاه کاربر اجرا می شوند) محدود می کند و از کاربر می خواهد قبل از انجام چنین درخواست هایی به سایت اجازه دهد. امکان درخواست این مجوز محدود به زمینه های امن است.

یک پیام با متن "به دنبال هر دستگاهی در شبکه محلی خود بگردید و به آن متصل شوید."
مثالی از درخواست مجوز دسترسی به شبکه محلی Chrome.

بسیاری از پلتفرم‌های دیگر، مانند Android ، iOS و MacOS دارای مجوز دسترسی به شبکه محلی هستند. برای مثال، ممکن است این مجوز را برای دسترسی به شبکه محلی برنامه Google Home در هنگام راه‌اندازی دستگاه‌های Google TV و Chromecast جدید اعطا کرده باشید.

چه نوع درخواست هایی تحت تأثیر قرار می گیرند؟

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

شبکه محلی هر مقصدی است که به فضای آدرس خصوصی تعریف شده در بخش 3 RFC1918 در IPv4 (مثلاً 192.168.0.0/16 )، یک آدرس IPv6 نقشه‌برداری شده با IPv4 که در آن آدرس IPv4 نگاشت شده خود خصوصی است، یا یک آدرس IPv6 خارج از ::1/128 ، و 2000::/3 ، فرعی ff00::/8 :

Loopback هر مقصدی است که به فضای "Loopback" ( 127.0.0.0/8 ) تعریف شده در بخش 3.2.1.3 از RFC1122 IPv4، فضای "link-local" ( 169.254.0.0/16 ) تعریف شده در RFC3927 (آدرس پیش از IPv4، Local) است. fcc00::/7 ) تعریف شده در بخش 3 RFC4193 IPv6، یا پیشوند "link-local" ( fe80::/10 ) تعریف شده در بخش 2.5.6 از RFC4291 IPv6.

یک شبکه عمومی هر مقصد دیگری است.

از آنجایی که مجوز دسترسی به شبکه محلی محدود به زمینه‌های ایمن است و انتقال دستگاه‌های شبکه محلی به HTTPS ممکن است دشوار باشد، اگر Chrome بداند که درخواست‌ها قبل از حل‌وفصل مقصد به شبکه محلی ارسال می‌شوند، درخواست‌های شبکه محلی دارای مجوز اکنون از بررسی محتوای مختلط مستثنی خواهند شد. Chrome می داند که درخواستی به شبکه محلی می رود اگر:

  • نام میزبان درخواست یک IP خصوصی تحت اللفظی است (به عنوان مثال، 192.168.0.1 ).
  • نام میزبان درخواست یک دامنه .local است.
  • فراخوانی fetch() با گزینه targetAddressSpace: "local".
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");

// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");

// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");

// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
  targetAddressSpace: "local",
});

آنچه در کروم در حال تغییر است

کروم 138

نسخه اولیه دسترسی به شبکه محلی ما برای آزمایش انتخاب در Chrome 138 آماده است. کاربران می‌توانند با تنظیم chrome://flags#local-network-access-check روی «فعال (مسدود)» درخواست مجوز جدید را فعال کنند. این از راه‌اندازی درخواست مجوز دسترسی به شبکه محلی برای درخواست‌هایی که با استفاده از API fetch() جاوا اسکریپت، بارگیری منابع فرعی، و ناوبری زیرفریم آغاز می‌شوند، پشتیبانی می‌کند.

یک سایت نمایشی در https://local-network-access-testing.glitch.me/ برای راه اندازی اشکال مختلف درخواست های شبکه محلی موجود است.

مسائل و محدودیت های شناخته شده

  • درخواست مجوز جدید در حال حاضر فقط در دسکتاپ کروم اجرا می شود. ما فعالانه روی انتقال آن به Android Chrome کار می کنیم. (در crbug.com/400455013 پیگیری شد.)
  • اتصالات WebSockets ( crbug.com/421156866 )، WebTransport ( crbug.com/421216834 ) و WebRTC ( crbug.com/421223919 ) به شبکه محلی هنوز در مجوز LNA قرار ندارند.
  • درخواست‌های شبکه محلی از طرف Service Workers در حال حاضر مستلزم آن است که مبدأ کارگر سرویس قبلاً مجوز دسترسی به شبکه محلی را دریافت کرده باشد.
    • اگر برنامه شما درخواست های شبکه محلی را از یک سرویس دهنده درخواست می کند، در حال حاضر باید به طور جداگانه یک درخواست شبکه محلی را از برنامه خود راه اندازی کنید تا درخواست مجوز را راه اندازی کنید. (ما در حال کار روی راهی برای کارگران هستیم تا در صورت وجود سند فعال، درخواست مجوز را فعال کنند—به crbug.com/404887282 مراجعه کنید.)

Chrome 139 و بالاتر

قصد ما این است که دسترسی به شبکه محلی را در اسرع وقت ارسال کنیم. با توجه به اینکه ممکن است برخی از سایت‌ها به زمان بیشتری برای به‌روزرسانی با حاشیه‌نویسی‌های دسترسی به شبکه محلی نیاز داشته باشند، یک نسخه آزمایشی مبدأ اضافه می‌کنیم تا به سایت‌ها اجازه دهیم پیش از ارسال دسترسی به شبکه محلی به‌طور پیش‌فرض، موقتاً از الزامات زمینه‌های امن انصراف دهند. این باید مسیر انتقال واضح تری را برای توسعه دهندگان فراهم کند، به خصوص اگر به دسترسی به منابع شبکه محلی از طریق HTTP متکی باشید (زیرا این درخواست ها در صورت درخواست از صفحه HTTPS در مرورگرهایی که هنوز معافیت محتوای ترکیبی دسترسی به شبکه محلی را پشتیبانی نمی کنند، به عنوان محتوای ترکیبی مسدود می شوند).

همچنین یک خط‌مشی شرکتی Chrome برای کنترل اینکه کدام سایت‌ها می‌توانند یا نمی‌توانند درخواست‌های شبکه محلی ارائه دهند (پیش اعطای یا رد کردن مجوز به آن سایت‌ها) اضافه می‌کنیم. این به نصب‌های مدیریت‌شده Chrome، مانند مواردی که در تنظیمات شرکتی هستند، اجازه می‌دهد تا از نشان دادن هشدار برای موارد استفاده مورد نظر شناخته شده اجتناب کنند، یا بیشتر قفل شوند و سایت‌ها نتوانند اصلاً اجازه درخواست کنند.

ما قصد داریم به ادغام مجوز دسترسی به شبکه محلی با ویژگی های مختلف ادامه دهیم که می تواند درخواست ها را به شبکه محلی ارسال کند. به عنوان مثال، ما قصد داریم به زودی دسترسی به شبکه محلی را برای اتصالات WebSockets، WebTransport و WebRTC ارسال کنیم.

با نزدیک‌تر شدن به راه‌اندازی کامل دسترسی به شبکه محلی در Chrome، اطلاعات بیشتری را به اشتراک خواهیم گذاشت.

بازخورد می خواستم

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

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

  • به chrome://flags#local-network-access-check بروید، پرچم را روی «Enabled (Blocking)» تنظیم کنید، و ببینید آیا وب‌سایت شما به درستی درخواست مجوز جدید را راه‌اندازی می‌کند (و پس از اعطای مجوز همانطور که انتظار می‌رود کار می‌کند).
  • اگر با مشکلی مواجه شدید یا بازخوردی دارید، مشکلی را در ردیاب مشکلات Chromium یا در مخزن GitHub توضیح دهنده LNA ما ثبت کنید. Chrome دوست دارد از شما بشنود.