इस दस्तावेज़ में, Maps JavaScript API के लिए वेबसाइट की कॉन्टेंट की सुरक्षा के लिए नीति (सीएसपी) को कॉन्फ़िगर करने के सुझाव दिए गए हैं. असली उपयोगकर्ता, कई तरह के ब्राउज़र और उनके वर्शन इस्तेमाल करते हैं. इसलिए, डेवलपर को इस उदाहरण को रेफ़रंस के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. साथ ही, उन्हें तब तक बदलाव करने चाहिए, जब तक सीएसपी के उल्लंघन की समस्या पूरी तरह से ठीक न हो जाए.
कॉन्टेंट की सुरक्षा के लिए नीति के बारे में ज़्यादा जानें.
सख्त सीएसपी
अपनी वेबसाइट को क्रॉस-साइट स्क्रिप्टिंग (XSS) के हमलों से बचाने के लिए, हमारा सुझाव है कि आप अनुमति वाली सूची वाले सीएसपी के बजाय, स्ट्रिक्ट सीएसपी का इस्तेमाल करें. Maps JavaScript API, नॉन्स पर आधारित स्ट्रिक्ट सीएसपी के इस्तेमाल के साथ काम करता है. वेबसाइटों को script और style, दोनों एलिमेंट में नॉन्स वैल्यू भरनी होगी. Maps JavaScript API, इंटरनल तौर पर ऐसे पहले एलिमेंट को ढूंढेगा और उसकी नॉन्स वैल्यू को स्टाइल या स्क्रिप्ट एलिमेंट पर लागू करेगा. ये एलिमेंट, एपीआई स्क्रिप्ट से डाले जाते हैं.
यहां दिए गए उदाहरण में, 'strict-dynamic' कीवर्ड की मदद से, मान्य नॉन्स वाली स्क्रिप्ट को अन्य स्क्रिप्ट लोड करने की अनुमति मिलती है. आपका पेज, Maps JavaScript API को नॉन्स के साथ लोड करता है. इसलिए, एपीआई उन अतिरिक्त स्क्रिप्ट को लोड कर सकता है जिनकी उसे ज़रूरत है. इस वजह से, आपको script-src में किसी भी Google डोमेन को शामिल करने की ज़रूरत नहीं है. 'strict-dynamic' के साथ काम करने वाले ब्राउज़र, उदाहरण में दिए गए https: सोर्स को अनदेखा करते हैं. यह सिर्फ़ पुराने ब्राउज़र के लिए फ़ॉलबैक है.
उदाहरण
यहां दिए गए उदाहरण में, एक सैंपल सीएसपी दिखाया गया है. साथ ही, वह एचटीएमएल पेज भी दिखाया गया है जिसमें इसे एम्बेड किया गया है:
कॉन्टेंट की सुरक्षा के लिए नीति का सैंपल
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:;
एचटीएमएल पेज का सैंपल
<!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>
अनुमति वाली सूची में शामिल सीएसपी
अगर आपने अनुमति वाली सूची में शामिल सीएसपी सेट अप किया है, तो कृपया Google Maps के डोमेन की सूची देखें. हमारा सुझाव है कि आप अप-टू-डेट रहने के लिए, इस दस्तावेज़ और Maps JavaScript API के रिलीज़ नोट देखें. साथ ही, ज़रूरत पड़ने पर अनुमति वाली सूची में कोई नया सर्विस डोमेन शामिल करें.
ऐसी वेबसाइटें जो Maps JavaScript API को किसी लेगसी Google API डोमेन (उदाहरण के लिए, maps.google.com) या किसी देश/इलाके के हिसाब से बने डोमेन (उदाहरण के लिए, maps.google.fr) से लोड करती हैं उन्हें भी इन डोमेन नेम को अपनी सीएसपी script-src सेटिंग में शामिल करना होगा. इसके बारे में यहां दिए गए उदाहरण में बताया गया है:
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:;