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

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

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

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

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

مثال

يوضّح المثال التالي نموذج سياسة أمان (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 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:;