Przewodnik po zasadach bezpieczeństwa treści

Ten dokument zawiera zalecenia dotyczące konfigurowania zasad bezpieczeństwa treści (CSP) witryny na potrzeby interfejsu Maps JavaScript API. Użytkownicy korzystają z wielu różnych typów i wersji przeglądarek, dlatego zachęcamy deweloperów do korzystania z tego przykładu jako odniesienia i dopracowywania go, aż do momentu, gdy nie będzie już żadnych naruszeń zasad CSP.

Więcej informacji o zasadach bezpieczeństwa treści

Ścisły CSP

Aby zmniejszyć ryzyko ataków, zalecamy stosowanie rygorystycznego CSP zamiast listy dozwolonych CSP. Interfejs Maps JavaScript API obsługuje ścisłe zasady CSP oparte na nonce. Strony internetowe muszą wypełnić elementy scriptstyle wartością nonce. Wewnętrznie interfejs Maps JavaScript API znajdzie pierwszy taki element i zastosuje jego wartość nonce do elementów stylu lub skryptu wstawionych przez skrypt interfejsu API.

Przykład

Poniżej znajduje się przykładowy kod CSP wraz ze stroną HTML, na której jest on umieszczony:

Przykładowa polityka Content Security Policy

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

Przykładowa strona 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>

Lista dozwolonych CSP

Jeśli masz skonfigurowaną listę dozwolonych dostawców usług, zapoznaj się z listą domen Map Google. Zalecamy zapoznanie się z tym dokumentem oraz informacjami o wersji interfejsu Maps JavaScript API. Jeśli to konieczne, uwzględnij nowe domeny usługi na liście dozwolonych.

Witryny, które wczytują interfejs Maps JavaScript API z starszej domeny interfejsów API Google (np. maps.google.com) lub domeny dla konkretnego regionu (np. maps.google.fr), muszą również uwzględniać te nazwy domen w ustawieniu CSP script-src, jak w tym przykładzie:

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