Рекомендации по Content Security Policy

В этом документе представлены рекомендации по настройке политики безопасности контента (CSP) веб-сайта для Maps JavaScript API. Поскольку конечные пользователи используют самые разные типы и версии браузеров, разработчикам рекомендуется использовать этот пример в качестве справочного материала для точной настройки до тех пор, пока не исчезнут дальнейшие нарушения CSP.

Узнайте больше о Политике безопасности контента .

Строгий CSP

Мы рекомендуем использовать строгий CSP вместо CSP из белого списка, чтобы снизить вероятность атак на систему безопасности. Maps JavaScript API поддерживает использование строгого CSP на основе nonce. Веб-сайты должны заполнять элементы 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 из устаревшего домена API Google (например, maps.google.com ) или домена конкретного региона (например, maps.google.fr ), также должны включать эти доменные имена в свой script-src CSP. настройки, как показано в следующем примере:

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 на основе nonce. Веб-сайты должны заполнять элементы 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 из устаревшего домена API Google (например, maps.google.com ) или домена конкретного региона (например, maps.google.fr ), также должны включать эти доменные имена в свой script-src CSP. настройки, как показано в следующем примере:

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:;