Przewodnik po zasadach bezpieczeństwa treści

Ten dokument zawiera zalecenia dotyczące konfiguracji standardu Content Security Policy (CSP) witryny dla interfejsu Maps JavaScript API. Użytkownicy korzystają z różnych typów i wersji przeglądarek, dlatego zachęcamy deweloperów do wykorzystania tego przykładu jako odniesienia. W celu ich dostosowania będziemy dostosowywać ustawienia, dopóki nie wystąpią kolejne naruszenia zasad CSP.

Więcej informacji o Content Security Policy

Rygorystyczne zasady CSP

Zalecamy używanie rygorystycznego CSP zamiast CSP na liście dozwolonych, aby zmniejszyć ryzyko ataków. Maps JavaScript API obsługuje rygorystyczne zasady CSP bez wartości. Zarówno elementy script, jak i style witryny muszą zawierać wartość jednorazową. Wewnętrznie interfejs Maps JavaScript API znajdzie pierwszy taki element i zastosuje jego wartość jednorazową do elementów stylu lub skryptu wstawionych odpowiednio przez skrypt API.

Przykład

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

Przykładowa zasada zabezpieczeń treści

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>

CSP – lista dozwolonych

Jeśli masz skonfigurowane CSP na liście dozwolonych, sprawdź listę domen w Mapach 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ą Maps JavaScript API ze starszej domeny interfejsów API Google (np. maps.google.com) lub domeny specyficznej dla regionu (np. maps.google.fr), muszą też zawierać te nazwy domen w ustawieniu CSP script-src, jak pokazano 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:;