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

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

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

מדיניות CSP מחמירה

מומלץ להשתמש במדיניות CSP מחמירה להוסיף את CSP לרשימת ההיתרים כדי לצמצם את הסיכון למתקפות אבטחה. ב-Maps JavaScript API יש תמיכה בשימוש ב-CSP מחמירים ומבוססת-על. האתרים צריכים לאכלס את הרכיבים script ו-style עם ערך צופן חד-פעמי (nonce). באופן פנימי, Maps JavaScript API ימצא את הרכיב הראשון, ולהחיל את הערך צופן חד-פעמי (nonce) שלו על רכיבי סגנון או סקריפט שנוספו על ידי ה-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 נתוני גרסה, ולהוסיף כל דומיין שירות חדש לרשימת ההיתרים, אם יש צורך.

אתרים שטוענים את ממשק JavaScript API של מפות Google מגרסה מדור קודם דומיין של 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:;