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

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

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

سياسة أمان المحتوى (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)

إذا كنت قد أعددت قائمة مسموح بها لخدمة إدارة الخدمات (CSP)، يُرجى الرجوع إلى قائمة نطاقات "خرائط Google". ننصحك بالاطّلاع على هذا المستند وملاحظات الإصدار الخاصة لواجهة برمجة التطبيقات JavaScript API في "خرائط Google" للاطّلاع على آخر المعلومات، وإدراج أي نطاق خدمة جديد في القائمة المسموح بها إذا لزم الأمر.

يجب أن تتضمّن أيضًا المواقع الإلكترونية التي تحمّل واجهة برمجة التطبيقات 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:;