ویژگی های مرورگر را با خط مشی مجوزها کنترل کنید

نحوه دسترسی صفحه شما و iframe های شخص ثالث در صفحه شما به ویژگی های مرورگر را مدیریت کنید.

کوین کی لی
Kevin K. Lee

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

کاربر تصمیم نهایی برای اجازه دسترسی به ویژگی های قدرتمندتر را دارد و باید با پذیرش یک درخواست مجوز صریح ارائه دهد.

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

تغییرات در خط مشی مجوزها

سیاست مجوزها قبلاً به عنوان سیاست ویژگی شناخته می شد. مفاهیم کلیدی یکسان باقی می مانند، اما برخی تغییرات مهم همراه با نام وجود دارد.

استفاده از فیلدهای ساختاریافته

فیلدهای ساختاریافته مجموعه ای از ساختارهای داده رایج را برای استانداردسازی تجزیه و سریال سازی مقادیر فیلد هدر HTTP ارائه می کنند. از پست وبلاگ Fastly، " بهبود HTTP با فیلدهای سرصفحه ساختاریافته " درباره فیلدهای ساختاریافته بیشتر بیاموزید.

قدیمی
  geolocation 'self' https://example.com; camera 'none'

قبل با سیاست ویژگی.

جدید
  geolocation=(self "https://example.com"), camera=()

اکنون با خط مشی مجوزها.

هدرها را با ویژگی iframe allow ترکیب کنید

با سیاست ویژگی، می‌توانید ویژگی را با افزودن مبدا به فهرست مبدا سرصفحه یا افزودن یک ویژگی allow به تگ iframe به یک فریم متقاطع اضافه کنید. با استفاده از Permissions Policy، اگر یک فریم متقاطع به لیست مبدا اضافه کنید، تگ iframe برای آن مبدا باید دارای ویژگی allow باشد. اگر پاسخ حاوی سرصفحه خط مشی مجوز نباشد، فهرست مبدا دارای مقدار پیش‌فرض * در نظر گرفته می‌شود. افزودن ویژگی allow به iframe امکان دسترسی به ویژگی را فراهم می کند.

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

خط‌مشی ویژگی همچنان بعد از Chrome 88 قابل استفاده است، اما به عنوان نام مستعار برای خط‌مشی مجوزها عمل می‌کند. غیر از نحو، هیچ تفاوتی در منطق وجود ندارد. اگر هر دو سرصفحه خط مشی مجوز و خط مشی ویژگی با هم استفاده شوند، سرصفحه Permissions-Policy دارای اولویت بیشتری خواهد بود و مقدار ارائه شده توسط هدر Feature-Policy را بازنویسی می کند.

چگونه از خط مشی مجوزها استفاده کنم؟

بررسی اجمالی سریع

قبل از اینکه عمیق شویم، نگاهی گذرا به یک سناریوی رایج بیندازید که در آن شما مالک یک وب‌سایت هستید و می‌خواهید نحوه استفاده سایت و کد شخص ثالث شما از ویژگی‌های مرورگر را کنترل کنید.

  • سایت شما https://your-site.example است.
  • سایت شما یک iframe از همان منبع ( https://your-site.example ) را جاسازی می کند.
  • سایت شما یک iframe از https://trusted-site.example که شما به آن اعتماد دارید جاسازی می کند.
  • سایت شما همچنین تبلیغات ارائه شده توسط https://ad.example را نمایش می دهد.
  • شما می خواهید موقعیت جغرافیایی را فقط برای سایت خود و سایت مورد اعتماد مجاز کنید، نه برای آگهی.

در این مورد از هدر زیر استفاده کنید:

Permissions-Policy: geolocation=(self "https://trusted-site.example")

و به صراحت مشخصه allow را روی تگ iframe برای سایت مورد اعتماد تنظیم کنید:

<iframe src="https://trusted-site.example" allow="geolocation">