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 zasadach bezpieczeństwa treści
Ścisłe CSP
Aby zmniejszyć ryzyko ataków na bezpieczeństwo, zalecamy stosowanie ścisłych zasad CSP zamiast zasad CSP opartych na liście dozwolonych.
Interfejs Maps JavaScript API obsługuje używanie ścisłego CSP opartego na jednorazowym kodzie.
Witryny muszą wypełniać elementy script
i style
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>
Dodawanie dostawcy usług dla twórców do listy dozwolonych
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ą też 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:;