راهنمای خط مشی امنیت محتوا

این سند توصیه هایی را برای نحوه پیکربندی سیاست امنیتی محتوای وب سایت (CSP) برای Maps JavaScript API ارائه می دهد. از آنجایی که طیف گسترده ای از انواع و نسخه های مرورگر توسط کاربران نهایی استفاده می شود، توسعه دهندگان تشویق می شوند تا از این مثال به عنوان یک مرجع استفاده کنند و تا زمانی که دیگر نقض CSP رخ ندهد، تنظیم دقیقی انجام دهند.

درباره خط مشی امنیت محتوا بیشتر بیاموزید .

CSP دقیق

ما توصیه می کنیم از CSP سختگیرانه به جای CSP لیست مجاز برای کاهش احتمال حملات امنیتی استفاده کنید. Maps JavaScript API از استفاده از CSP سختگیرانه غیر مبتنی بر پشتیبانی می کند. وب‌سایت‌ها باید عناصر script و style را با مقدار nonce پر کنند. در داخل، Maps JavaScript API اولین چنین عنصری را پیدا می‌کند و مقدار nonce آن را به ترتیب به عناصر سبک یا اسکریپت وارد شده توسط اسکریپت API اعمال می‌کند.

مثال

مثال زیر یک نمونه CSP را به همراه یک صفحه HTML نشان می دهد که در آن جاسازی شده است:

نمونه سیاست امنیتی محتوا

script-src 'nonce-{script value}' 'strict-dynamic' https: 'unsafe-eval' blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com data: blob:;
font-src https://fonts.gstatic.com;
style-src 'nonce-{style value}' https://fonts.googleapis.com;
worker-src blob:;

نمونه صفحه HTML

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css" nonce="{style value}">
    <style nonce="{style value}">...</style>
    ...
  </head>
  <body>
    <div id="map"></div>
    <script src="https://maps.googleapis.com/maps/api/js?key=&callback=initMap" async nonce="{script value}"></script>
    <script nonce="{script value}"> function initMap() { ... } </script>
  </body>
</html>

فهرست مجاز CSP

اگر فهرست مجاز CSP را تنظیم کرده‌اید، لطفاً به فهرست دامنه‌های Google Maps مراجعه کنید. توصیه می‌کنیم برای به‌روز ماندن به این سند و یادداشت‌های انتشار Maps JavaScript API مراجعه کنید و در صورت نیاز، هر دامنه سرویس جدیدی را در لیست مجاز قرار دهید.

وب‌سایت‌هایی که Maps JavaScript API را از یک دامنه قدیمی Google APIs (برای مثال maps.google.com ) یا یک دامنه خاص منطقه (مثلا maps.google.fr ) بارگیری می‌کنند، باید این نام‌های دامنه را نیز در CSP script-src خود داشته باشند. تنظیم، همانطور که در مثال زیر نشان داده شده است:

script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.gstatic.com *.google.com https://*.ggpht.com *.googleusercontent.com blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com  *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com  data: blob:;
font-src https://fonts.gstatic.com;
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
worker-src blob:;
،

این سند توصیه هایی را برای نحوه پیکربندی سیاست امنیتی محتوای وب سایت (CSP) برای Maps JavaScript API ارائه می دهد. از آنجایی که طیف گسترده ای از انواع و نسخه های مرورگر توسط کاربران نهایی استفاده می شود، توسعه دهندگان تشویق می شوند تا از این مثال به عنوان یک مرجع استفاده کنند و تا زمانی که دیگر نقض CSP رخ ندهد، تنظیم دقیقی انجام دهند.

درباره خط مشی امنیت محتوا بیشتر بیاموزید .

CSP دقیق

ما توصیه می کنیم از CSP سختگیرانه به جای CSP لیست مجاز برای کاهش احتمال حملات امنیتی استفاده کنید. Maps JavaScript API از استفاده از CSP سختگیرانه غیر مبتنی بر پشتیبانی می کند. وب‌سایت‌ها باید عناصر script و style را با مقدار nonce پر کنند. در داخل، Maps JavaScript API اولین چنین عنصری را پیدا می‌کند و مقدار nonce آن را به ترتیب به عناصر سبک یا اسکریپت وارد شده توسط اسکریپت API اعمال می‌کند.

مثال

مثال زیر یک نمونه CSP را به همراه یک صفحه HTML نشان می دهد که در آن جاسازی شده است:

نمونه سیاست امنیتی محتوا

script-src 'nonce-{script value}' 'strict-dynamic' https: 'unsafe-eval' blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com data: blob:;
font-src https://fonts.gstatic.com;
style-src 'nonce-{style value}' https://fonts.googleapis.com;
worker-src blob:;

نمونه صفحه HTML

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css" nonce="{style value}">
    <style nonce="{style value}">...</style>
    ...
  </head>
  <body>
    <div id="map"></div>
    <script src="https://maps.googleapis.com/maps/api/js?key=&callback=initMap" async nonce="{script value}"></script>
    <script nonce="{script value}"> function initMap() { ... } </script>
  </body>
</html>

فهرست مجاز CSP

اگر فهرست مجاز CSP را تنظیم کرده‌اید، لطفاً به فهرست دامنه‌های Google Maps مراجعه کنید. توصیه می‌کنیم برای به‌روز ماندن به این سند و یادداشت‌های انتشار Maps JavaScript API مراجعه کنید و در صورت نیاز، هر دامنه سرویس جدیدی را در لیست مجاز قرار دهید.

وب‌سایت‌هایی که Maps JavaScript API را از یک دامنه قدیمی Google APIs (برای مثال maps.google.com ) یا یک دامنه خاص منطقه (مثلا maps.google.fr ) بارگیری می‌کنند، باید این نام‌های دامنه را نیز در CSP script-src خود داشته باشند. تنظیم، همانطور که در مثال زیر نشان داده شده است:

script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.gstatic.com *.google.com https://*.ggpht.com *.googleusercontent.com blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com  *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com  data: blob:;
font-src https://fonts.gstatic.com;
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
worker-src blob:;