מדריך המדיניות בנושא אבטחת תוכן

במסמך הזה מפורטות המלצות להגדרת Content Security Policy (CSP) של האתר ב-Maps JavaScript API. מאחר שמשתמשי הקצה משתמשים במגוון רחב של גרסאות וסוגים של דפדפנים, מומלץ למפתחים להשתמש בדוגמה הזו כחומר עזר, ולבצע התאמות עד שלא יתרחשו הפרות נוספות של CSP.

מידע נוסף על Content Security Policy

CSP מחמיר

כדי לצמצם את הסיכון למתקפות אבטחה, מומלץ להשתמש במדיניות CSP מחמירה ולהוסיף את ה-CSP לרשימת ההיתרים. Maps JavaScript API תומך בשימוש ב-CSP מחמיר על בסיס צופן חד-פעמי. האתרים חייבים לאכלס את הרכיבים script ו-style בערך חד-פעמי. באופן פנימי, ממשק ה-API של JavaScript במפות ימצא את הרכיב הראשון מסוג זה, ויחיל את הערך החד-פעמי שלו על רכיבי סגנון או סקריפט שנוספו על ידי סקריפט ה-API, בהתאמה.

דוגמה

הדוגמה הבאה מציגה דוגמה של CSP, יחד עם דף HTML שבו היא מוטמעת:

דוגמה של מדיניות אבטחת תוכן

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:;

דף 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

אם הגדרתם מדיניות CSP לרשימת ההיתרים, אתם יכולים לעיין ברשימת הדומיינים של מפות Google. מומלץ לעיין במסמך הזה ובנתוני הגרסה של Maps JavaScript API כדי להתעדכן, ולהוסיף כל דומיין שירות חדש לרשימת ההיתרים במקרה הצורך.

אתרים שטוענים את Maps JavaScript API מדומיין קודם של Google APIs (למשל maps.google.com) או מדומיין ספציפי לאזור (למשל maps.google.fr), חייבים לכלול גם את שמות הדומיינים האלה בהגדרה script-src של CSP, כפי שמוצג בדוגמה הבאה:

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:;