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

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

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

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

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

مثال

يعرض المثال التالي نموذجًا لسياسة أمان المحتوى، بالإضافة إلى صفحة 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) للقائمة المسموح بها، يُرجى الرجوع إلى قائمة نطاقات "خرائط 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:;