دليل سياسة أمان المحتوى

يقدّم هذا المستند اقتراحات حول كيفية ضبط سياسة أمان المحتوى (CSP) الخاصة بالموقع الإلكتروني لـ Maps JavaScript API. بما أنّ المستخدمين النهائيين يستخدمون مجموعة متنوعة من أنواع وإصدارات المتصفّحات، ننصح مطوّري البرامج باستخدام هذا المثال كمرجع، والضبط الدقيق للوصول إلى عدم حدوث انتهاكات أخرى لـ CSP.

مزيد من المعلومات حول سياسة أمان المحتوى

سياسة أمان محتوى (CSP) صارمة

ننصح باستخدام سياسة CSP صارمة ضِمن القائمة المسموح بها لـ CSP للحدّ من احتمال حدوث هجمات أمنية. تتيح واجهة برمجة تطبيقات JavaScript للخرائط استخدام سياسة CSP صارمة قائمة على قواعد غير أساسية. يجب أن تملأ المواقع الإلكترونية العنصرَين script وstyle بقيمة لا تتبع. داخليًا، ستعثر واجهة برمجة تطبيقات JavaScript في "خرائط Google" على أول عنصر من هذا النوع، وتطبّق القيمة الخاصة على عناصر النمط أو النص البرمجي المدرجة بواسطة النص البرمجي لواجهة برمجة التطبيقات على التوالي.

مثال

يوضّح المثال التالي نموذجًا من سياسة 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. ننصحك بالرجوع إلى هذا المستند وملاحظات الإصدار لواجهة برمجة تطبيقات JavaScript للخرائط للاطّلاع على آخر المعلومات، وتضمين أي نطاق خدمة جديد في القائمة المسموح بها إذا لزم الأمر.

يجب على المواقع الإلكترونية التي تحمِّل Maps JavaScript API من نطاق Google APIs القديم (على سبيل المثال maps.google.com) أو نطاق خاص بمنطقة (مثل maps.google.fr)، أن تتضمّن أيضًا أسماء النطاقات هذه في إعداد CSP 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:;