Ten dokument zawiera zalecenia dotyczące konfigurowania Content Security Policy (CSP) witryny pod kątem interfejsu Maps JavaScript API. Użytkownicy końcowi używają wielu różnych typów i wersji przeglądarek, więc zachęcamy deweloperów, aby korzystali z tego przykładu i dostrajali go, aż nie będzie już żadnych naruszeń zasad CSP.
Więcej informacji o polityce treści
Ścisłe CSP
Zalecamy stosowanie ścisłego szyfrowania CSP, które eliminuje ryzyko ataków.
Interfejs Maps JavaScript API obsługuje rygorystyczne zasady CSP oparte na protokole jednorazowym.
Witryny muszą wypełniać elementy script
i style
wartością jednorazową.
Wewnętrznie interfejs API JavaScript Map Google znajdzie pierwszy taki element i zastosuje jego wartość jednorazową do elementów stylu lub skryptu wstawionych odpowiednio przez skrypt interfejsu API.
Przykład
Poniższy przykład pokazuje CSP wraz ze stroną HTML, na której jest ona umieszczona:
Przykładowa zasada dotycząca bezpieczeństwa 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>
Lista dozwolonych CSP
Jeśli korzystasz z CSP listy dozwolonych, zapoznaj się z listą domen Map Google. Zalecamy zapoznanie się z tym dokumentem oraz informacjami o wersji interfejsu Maps JavaScript API, aby być na bieżąco. W razie potrzeby dodaj nową domenę usługi do listy dozwolonych.
Witryny, które wczytują interfejs Maps JavaScript API ze starszej domeny interfejsów API Google (np. maps.google.com
) lub z danej domeny (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:;