Przewodnik po zasadach Content Security Policy

Ten dokument zawiera rekomendacje 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 deweloperzy powinni używać tego przykładu jako punktu odniesienia i dostosowywać go, dopóki nie wystąpią już żadne naruszenia zasad CSP.

Więcej informacji o (standard) Content Security Policy

Ścisła zasada CSP

Aby zmniejszyć ryzyko ataków na bezpieczeństwo, zalecamy stosowanie ścisłego CSP zamiast CSP z białą listą. Interfejs Maps JavaScript API obsługuje ścisłe zasady CSP oparte na jednorazowym kodzie. Witryny muszą wypełniać 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ższy przykład pokazuje przykładową strategię CSP wraz ze stroną HTML, na której jest ona umieszczona:

Przykładowa zasada 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 CSP, zapoznaj się z listą domen Map Google. Zalecamy zapoznanie się z tym dokumentem i informacjami o wersji interfejsu Maps JavaScript API, aby być na bieżąco, oraz w razie potrzeby dodanie nowych domen usług do listy dozwolonych.

Witryny, które wczytują interfejs Maps JavaScript API z starszej domeny interfejsów API Google (np. maps.google.com) lub domeny regionalnej (np. maps.google.fr), muszą również uwzględniać 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:;