أفضل ممارسات أمان واجهة برمجة التطبيقات

مفاتيح واجهة برمجة التطبيقات مطلوبة للتطبيقات والمشروعات التي تستخدم واجهات برمجة التطبيقات وحزمة تطوير البرامج (SDK) في "منصة خرائط Google". للحصول على أقصى قدر من الأمان بأقل مجهود، احرص على تأمين مفاتيح واجهة برمجة التطبيقات عند إنشائها.

على الرغم من إمكانية تأمين مفاتيح واجهة برمجة التطبيقات بعد إنشائها، قد تكون هناك قيود مختلفة بناءً على كيفية استخدام المفتاح. يُعد تحديث المفاتيح أو استبدالها في التطبيقات المتوافقة مع الأجهزة الجوّالة (Android وiOS) الأكثر تعقيدًا، لأن المفاتيح لن يتم استبدالها جميعًا حتى يحدِّث جميع العملاء تطبيقاتهم. يُعد تحديث المفاتيح أو استبدالها في تطبيقات جافا سكريبت أو خدمة الويب أكثر مباشرة، ولكن قد يتطلب تحديث هذه المفاتيح أو استبدالها تخطيطًا دقيقًا وسرعة في العمل.

يتم إدراج ممارسات الأمان السارية على منتج "منصة خرائط Google" الفردي، مثل واجهة برمجة تطبيقات JavaScript للخرائط، في القسم مزيد من المعلومات.

تقييد مفاتيح واجهة برمجة التطبيقات

عند إنشاء مفاتيح واجهة برمجة التطبيقات لأول مرة، يمكنك تقييدها بقيود التطبيقات وقيود واحدة أو أكثر من قيود واجهة برمجة التطبيقات.

  • القيود المفروضة على التطبيقات تقيّد استخدام مفتاح واجهة برمجة التطبيقات على نظام أساسي محدد (Android أو iOS) أو مواقع محددة (عنوان IP عام وموقع ويب). يمكن إضافة نوع واحد فقط من قيود التطبيق إلى أي مفتاح فردي لواجهة برمجة التطبيقات.

  • تحد قيود واجهة برمجة التطبيقات من استخدام مفاتيح واجهة برمجة التطبيقات بواحدة أو أكثر من واجهات برمجة التطبيقات أو حزم SDK لنظام خرائط Google الأساسي. ستتم معالجة طلبات استخدام واجهات برمجة التطبيقات أو حِزم تطوير البرامج (SDK) المرتبطة بمفتاح واجهة برمجة التطبيقات فقط. بالنسبة إلى أي مفتاح واجهة برمجة تطبيقات محدد، يمكنك تحديد قيود واجهة برمجة التطبيقات حسب الحاجة.

في حال عدم تأمين مفتاح واجهة برمجة التطبيقات عند إنشائه، يمكنك إنشاء مفاتيح إضافية لواجهة برمجة التطبيقات وحظرها، ثم تحديث جميع تطبيقاتك باستخدام مفاتيح واجهة برمجة التطبيقات الجديدة. على الرغم من أن مفتاحًا واحدًا لكل تطبيق قد يكون مثاليًا لأغراض الأمان، يمكنك استخدام المفاتيح المقيّدة على تطبيقات متعددة طالما أن أنواع قيود التطبيقات على المفتاح لن تتسبب في مشاكل عدم التوافق مع التطبيقات التي تشارك مفتاحًا.

إذا كنت تقيّد مفاتيح واجهة برمجة التطبيقات بعد إنشائها، يُرجى التحقق من استخدام مفتاح واجهة برمجة التطبيقات للتأكد من أن القيود لن تؤدي إلى إيقاف أي من تطبيقاتك الحالية.

  1. انتقِل إلى صفحة المقاييس في Google Cloud Console.

  2. اختَر عرض الفلاتر.

  3. من تجميع حسب، اختر بيانات اعتماد. سترى مفاتيح واجهة برمجة التطبيقات التي يتم استخدامها مع خدمات Google.

  4. انقر على بيانات الاعتماد.

  5. ألغِ اختيار جميع بيانات الاعتماد.

  6. بالنسبة إلى كل مفتاح معروض، اختَر المفتاح وانقر على موافق.

  7. من تجميع حسب، اختر واجهة برمجة التطبيقات. ستشاهد قيود واجهة برمجة التطبيقات التي يتم تطبيقها على المفتاح.

    قد يمنحك تحديد طريقة واجهة برمجة التطبيقات من تجميع حسب أدلة حول نوع قيود التطبيق الأكثر ملاءمة للمفتاح.

تعيين تقييد تطبيق لمفتاح واجهة برمجة التطبيقات

  1. انتقل إلى صفحة بيانات الاعتماد.
  2. اختَر مفتاح واجهة برمجة التطبيقات الذي تريد ضبط قيود عليه. تظهر صفحة موقع مفتاح واجهة برمجة التطبيقات.

  3. ضمن القيود الرئيسية، اختَر قيود التطبيق.

    حدد أحد أنواع التقييد وقدم المعلومات المطلوبة بعد قائمة التقييد.

    نوع التقييد الوصف
    مُحيلو HTTP حدد موقع ويب واحدًا أو أكثر من مواقع الإحالة. يُسمح باستخدام أحرف البدل لتفويض جميع النطاقات الفرعية (على سبيل المثال، يقبل *.google.com جميع المواقع الإلكترونية التي تنتهي بـ .google.com). يُرجى تحديد https:// وhttp:// كما هو. يجب استخدام تمثيل خاص للأنواع الأخرى من بروتوكولات عناوين URL المُحيلة. على سبيل المثال، يمكنك تنسيق file:///path/to/ على هذا النحو __file_url__//path/to/*. بعد تفعيل المُحيلين، تأكّد من مراقبة استخدامك للتأكّد من أنه يطابق توقّعاتك. بروتوكولات المُحيل التالية معتمدة: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    عناوين IP حدد عنوان IPv4 أو IPv6 واحدًا أو شبكة فرعية باستخدام تدوين CIDR. استخدِم عنوان IP العام للخادم لأنّ أحد طلبات خدمة الويب يتحقّق من عنوان IP الخارجي ويقارنه بمفتاح واجهة برمجة التطبيقات.
    التطبيقات المتوافقة مع Android أضِف الملف المرجعي لشهادة توقيع SHA-1 واسم حزمة Android من ملف AndroidManifest.xml.
    تطبيقات iOS أسفل الأنواع، اختَر معرّف حزمة iOS المناسب من القائمة.
  4. انقر على حفظ.

تعيين قيد واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات

  1. انتقل إلى صفحة بيانات الاعتماد.

  2. اختَر مفتاح واجهة برمجة التطبيقات الذي تريد تقييده. تظهر صفحة تقييد مفتاح واجهة برمجة التطبيقات وإعادة تسميته.

  3. ضمن قيود واجهة برمجة التطبيقات:

    • انقر على تقييد المفتاح.

    • انقر على القائمة المنسدلة تحديد واجهات برمجة التطبيقات وحدد واجهات برمجة التطبيقات أو حِزم تطوير البرامج (SDK) التي ترغب في وصول تطبيقك إليها باستخدام مفتاح واجهة برمجة التطبيقات.

      (إذا لم يتم إدراج واجهة برمجة التطبيقات أو حزمة تطوير البرامج (SDK)، عليك تفعيلها).

  4. انقر على حفظ.

    ويصبح التقييد جزءًا من تعريف مفتاح واجهة برمجة التطبيقات بعد هذه الخطوة. إذا لم تقدم التفاصيل المناسبة أو لم تنقر على "حفظ"، فلن يتم تقييد مفتاح واجهة برمجة التطبيقات. (لمزيد من المعلومات، راجع دليل الحصول على مفتاح واجهة برمجة تطبيقات لواجهة برمجة التطبيقات أو حزمة SDK المحددة التي تهمك.)

حذف مفاتيح واجهة برمجة التطبيقات غير المستخدمة

قبل حذف مفتاح واجهة برمجة تطبيقات، تأكد من أنه لا يتم استخدامه في الإنتاج. إذا لم تكن هناك زيارات ناجحة، فمن المحتمل أن يكون المفتاح آمنًا للحذف.

لحذف مفتاح واجهة برمجة تطبيقات:

  1. انتقل إلى صفحة بيانات الاعتماد.

  2. اختَر مفتاح واجهة برمجة التطبيقات الذي تريد حذفه.

  3. اختر الزر حذف بالقرب من أعلى الصفحة.

  4. عندما يظهر مربع الحوار حذف بيانات الاعتماد، حدد حذف.

    يستغرق حذف مفتاح واجهة برمجة التطبيقات بضع دقائق حتى يتم نشره. وبعد النشر، سيتم رفض الزيارات التي تستخدم مفتاح واجهة برمجة التطبيقات المحذوفة.

طرق أخرى لتأمين واجهات برمجة التطبيقات

توخي الحذر عند إعادة إنشاء مفاتيح واجهة برمجة التطبيقات

تؤدي إعادة إنشاء مفتاح واجهة برمجة التطبيقات إلى إنشاء مفتاح جديد يتضمن جميع القيود المفروضة على المفتاح القديم. وسيؤدي ذلك أيضًا إلى بدء موقّت يعمل على مدار 24 ساعة لإيقاف مفتاح واجهة برمجة التطبيقات القديم.

وخلال هذه الفترة الزمنية، يتم قبول كل من المفتاح القديم والجديد، ما يمنحك فرصة لترحيل تطبيقاتك لاستخدام المفتاح الجديد. ومع ذلك، ستتوقف أي تطبيقات لا تزال تستخدم مفتاح واجهة برمجة التطبيقات القديم عن العمل بعد انقضاء هذه الفترة.

  1. انتقل إلى صفحة مفاتيح واجهة برمجة التطبيقات.

  2. اختر العودة إلى المفتاح السابق.

  3. في مربّع الحوار العودة إلى نسخة سابقة، انقر على مفتاح الرجوع.

وعند العودة إلى الإصدار السابق، يصبح الإصدار "الجديد" السابق من المفتاح هو الإصدار السابق، ويتم تعيين موقِّت جديد لإلغاء تفعيله لمدة 24 ساعة. من الممكن الرجوع بين هاتين القيمتين الرئيسيتين حتى تعيد إنشاء المفتاح مرة أخرى.

وتستبدل عملية التجديد الثانية قيمة المفتاح غير النشط القديمة.

مراقبة استخدام واجهة برمجة التطبيقات

للتحقق من استخدام مفتاح واجهة برمجة التطبيقات:

  1. انتقل إلى صفحة المقاييس.

  2. انقر على عرض الفلاتر.

  3. من تجميع حسب، اختر طريقة واجهة برمجة التطبيقات.

  4. ضمن رمز الاستجابة، اختَر 2xx لعرض أي طلبات ناجحة لهذا المفتاح.

في حالة اكتشاف استخدام غير مصرح به، يمكنك إجراء ما يلي:

  1. تقييد المفاتيح.

    في حال استخدام المفتاح نفسه في عدة تطبيقات، يمكنك نقل البيانات إلى عدة مفاتيح واجهة برمجة تطبيقات، ويُفضَّل استخدام مفاتيح واجهة برمجة تطبيقات منفصلة لكل تطبيق.

  2. في حال استمرار الاستخدام غير المصرَّح به، يمكنك إعادة إنشاء المفاتيح المتأثرة أو حذفها.

  3. التواصل مع فريق الدعم.

استخدام مفاتيح واجهة برمجة تطبيقات منفصلة لكل تطبيق

وهذا يحد من نطاق كل مفتاح. إذا تم اختراق مفتاح واجهة برمجة تطبيقات، يمكنك حذف المفتاح المتأثر أو إعادة إنشائه بدون الحاجة إلى تحديث مفاتيح واجهة برمجة التطبيقات الأخرى.

نقل البيانات إلى مفاتيح واجهة برمجة تطبيقات متعددة

للترحيل من استخدام مفتاح واجهة برمجة تطبيقات واحد لتطبيقات متعددة، إلى مفتاح واجهة برمجة تطبيقات واحد فريد لكل تطبيق، نفِّذ ما يلي:

  1. تحديد التطبيقات التي ستحتاج إلى مفاتيح جديدة.

    • تعتبر تطبيقات الويب هي الأسهل في التحديث نظرًا لتحكمك في الشفرة كلها. خطط لتحديث جميع مفاتيح التطبيقات المستندة إلى الويب.
    • تعد التطبيقات المتوافقة مع الأجهزة الجوّالة أصعب بكثير، نظرًا لأنه يجب على عملائك تحديث تطبيقاتهم قبل أن يمكن استخدام المفاتيح الجديدة.
  2. إنشاء المفاتيح الجديدة وتقييدها.

    • أضِف تقييد تطبيق وقيد واجهة برمجة تطبيقات واحدًا على الأقل.
  3. أضف المفاتيح الجديدة إلى تطبيقاتك المتنوعة.

    • بالنسبة إلى التطبيقات المتوافقة مع الأجهزة الجوّالة، قد تستغرق هذه العملية شهورًا حتى يتم تحديث جميع المستخدمين إلى آخر إصدار باستخدام مفتاح واجهة برمجة التطبيقات الجديد.

واجهات برمجة تطبيقات خدمة الويب لخرائط Google أو طرق حماية تطبيقات واجهات برمجة تطبيقات الويب الثابتة

  • تخزين مفاتيح واجهة برمجة التطبيقات وأسرار التوقيع خارج شفرة المصدر لتطبيقك. في حالة وضع مفاتيح واجهة برمجة التطبيقات أو أي معلومات خاصة أخرى في متغيرات البيئة أو تضمين ملفات مخزنة بشكل منفصل ثم مشاركة الشفرة، فلن يتم تضمين مفاتيح واجهة برمجة التطبيقات أو أسرار التوقيع في الملفات المشتركة.

  • تخزين مفاتيح واجهة برمجة التطبيقات أو توقيعات الأسرار في الملفات خارج العرض التدرّجي المصدر لتطبيقك. في حالة تخزين مفاتيح واجهة برمجة التطبيقات أو أي معلومات خاصة أخرى في الملفات، فاحتفظ بالملفات خارج شجرة المصدر في تطبيقك لإبعاد مفاتيحك عن نظام التحكم في شفرة المصدر. وهذا أمر مهم على وجه الخصوص إذا كنت تستخدم نظامًا عامًا لإدارة رمز المصدر، مثل GitHub.

واجهات برمجة التطبيقات لخدمات الويب أو طرق حماية التطبيقات المتوافقة مع الأجهزة الجوّالة على الويب أو واجهات برمجة التطبيقات الثابتة

  • استخدام خادم وكيل. يوفر الخادم الوكيل مصدرًا ثابتًا للتفاعل مع واجهة برمجة التطبيقات المناسبة للنظام الأساسي لخرائط Google. لمزيد من المعلومات حول استخدام الخادم الوكيل، راجع العيش بشكل مباشر: استخدام الخوادم الوكيلة مع مكتبات برامج Google Data API.

  • إخفاء مفاتيح التشفير لواجهة برمجة التطبيقات أو تشفير سر توقيعها. ويؤدي هذا إلى تعقيد عملية استخراج مفاتيح واجهة برمجة التطبيقات والبيانات الخاصة الأخرى من التطبيق مباشرة.

مزيد من المعلومات

تسرد هذه الجداول قيود مفتاح واجهة برمجة التطبيقات المناسبة وأفضل ممارسات واجهة برمجة التطبيقات لكل واجهة برمجة تطبيقات، أو حزمة SDK أو خدمة في Google Maps Platform.

مواقع الويب التي تستخدم جافا سكريبت للخرائط أو تضمين أو واجهات برمجة تطبيقات ثابتة

واجهة برمجة التطبيقات/حزمة تطوير البرامج (SDK)/الخدمة قيود التطبيق (1) القيود المفروضة على واجهة برمجة التطبيقات (1) أفضل الممارسات
واجهة برمجة تطبيقات JavaScript للخرائط (2) تقييد مُحيل HTTP Maps JavaScript API
خدمة الاتجاهات، واجهة برمجة تطبيقات JavaScript للخرائط تقييد مُحيل HTTP Directions API وMaps JavaScript API
خدمة مصفوفة المسافة وواجهة برمجة تطبيقات JavaScript للخرائط تقييد مُحيل HTTP واجهة برمجة التطبيقات لمصفوفة المسافات، وواجهة برمجة تطبيقات JavaScript للخرائط
خدمة الارتفاع، واجهة برمجة تطبيقات JavaScript للخرائط تقييد مُحيل HTTP واجهة برمجة التطبيقات للارتفاعات وواجهة برمجة تطبيقات JavaScript للخرائط
خدمة الترميز الجغرافي، واجهة برمجة تطبيقات JavaScript للخرائط تقييد مُحيل HTTP واجهة برمجة التطبيقات للترميز الجغرافي، واجهة برمجة تطبيقات جافا سكريبت للخرائط
مكتبة الأماكن، واجهة برمجة تطبيقات JavaScript للخرائط تقييد مُحيل HTTP واجهة برمجة تطبيقات الأماكن، واجهة برمجة تطبيقات جافا سكريبت للخرائط
واجهة برمجة التطبيقات لتضمين الخرائط تقييد مُحيل HTTP Maps Embed API
واجهة برمجة تطبيقات الخرائط الثابتة تقييد مُحيل HTTP Maps Static API
واجهة برمجة التطبيقات الثابتة لميزة "التجوّل الافتراضي" تقييد مُحيل HTTP Street View Static API

التطبيقات والخوادم التي تستخدم خدمات الويب

واجهة برمجة التطبيقات/حزمة تطوير البرامج (SDK)/الخدمة قيود التطبيق (1) القيود المفروضة على واجهة برمجة التطبيقات (1) أفضل الممارسات
واجهة برمجة تطبيقات التحقّق من العنوان تقييد عنوان IP(4) واجهة برمجة تطبيقات التحقق من العنوان
واجهة برمجة التطبيقات للاتجاهات تقييد عنوان IP(4) Directions API
واجهة برمجة التطبيقات لمصفوفة المسافات تقييد عنوان IP(4) Distance Matrix API
واجهة برمجة تطبيقات Elevation تقييد عنوان IP(4) Elevation API
واجهة برمجة التطبيقات للترميز الجغرافي تقييد عنوان IP(4) Geocoding API
واجهة برمجة التطبيقات للمواقع الجغرافية تقييد عنوان IP(4) Geolocation API
واجهة برمجة تطبيقات الأماكن (5) تقييد عنوان IP(4) واجهة برمجة تطبيقات الأماكن
واجهة برمجة التطبيقات للطرق تقييد عنوان IP(4) Roads API
واجهة برمجة تطبيقات المنطقة الزمنية تقييد عنوان IP(4) Time Zone API

التطبيقات المتوافقة مع Android

واجهة برمجة التطبيقات/حزمة تطوير البرامج (SDK)/الخدمة قيود التطبيق (1) القيود المفروضة على واجهة برمجة التطبيقات (1) أفضل الممارسات
"SDK للخرائط" لنظام التشغيل Android تقييد Android حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع Android
تطبيق الأماكن على الأجهزة التي تعمل بنظام التشغيل Android تقييد Android واجهة برمجة تطبيقات الأماكن

تطبيقات iOS

واجهة برمجة التطبيقات/حزمة تطوير البرامج (SDK)/الخدمة قيود التطبيق (1) القيود المفروضة على واجهة برمجة التطبيقات (1) أفضل الممارسات
SDK للخرائط لنظام التشغيل iOS تقييد iOS حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS
تطبيق الأماكن على الأجهزة التي تعمل بنظام التشغيل iOS تقييد iOS واجهة برمجة تطبيقات الأماكن

1 يمكنك استخدام مفتاح واجهة برمجة تطبيقات غير مقيد مع أيٍ من واجهة برمجة تطبيقات Google Maps Platform أو SDK. ومع ذلك، فإننا ننصح بشدة بتقييد مفاتيح واجهة برمجة التطبيقات، خاصة في السيناريوهات التالية:

  • ستكون البيئة التجريبية مرئية بشكل علني أو سيتم عرضها.

  • التطبيق الذي يستخدم مفتاح واجهة برمجة التطبيقات جاهز للاستخدام في بيئة إنتاج.

2 بالنسبة إلى التطبيقات المتوافقة مع الأجهزة الجوّالة، يمكنك استخدام تطبيق SDK للخرائط على نظام التشغيل Android و"SDK للخرائط" لنظام التشغيل iOS.

3 بالنسبة إلى واجهة برمجة التطبيقات الثابتة للخرائط وواجهة برمجة التطبيقات الثابتة لميزة "التجوّل الافتراضي"، بالإضافة إلى مفتاح واجهة برمجة التطبيقات، عليك توفير توقيع رقمي لتجاوز الحصة اليومية التي تبلغ 25,000 حمل خريطة.

إذا وقّعت على طلباتك، يمكنك مراجعة عدد الطلبات غير الموقَّعة التي تريد السماح بها يوميًا وضبط حصص الطلبات غير الموقَّعة وفقًا لذلك.

4 قد تكون قيود عنوان IP غير عمليّة في بعض السيناريوهات، مثل التطبيقات المتوافقة مع الأجهزة الجوّالة وبيئات السحابة الإلكترونية التي تعتمد على عناوين IP الديناميكية. عند استخدام واجهات برمجة التطبيقات لخدمة "خرائط Google" على الويب في هذه السيناريوهات، يمكنك تأمين تطبيقاتك باستخدام خادم وكيل أو تشويش.

5 بالنسبة إلى التطبيقات المتوافقة مع الأجهزة الجوّالة، يمكنك استخدام تطبيق SDK لأماكن Google لنظام التشغيل Android وتطبيق SDK لأماكن iOS.