منع إساءة استخدام Gemini API باستخدام ميزة "فحص التطبيقات من Firebase"

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

توفّر Firebase AI Logic بوابة وكيل تتيح لك الدمج مع Firebase App Check وحماية واجهات برمجة التطبيقات الخاصة بنماذج الذكاء الاصطناعي التوليدي التي تستدعيها تطبيقاتك على الأجهزة الجوّالة والويب. يتيح استخدام App Check مع حِزم تطوير البرامج (SDK)Firebase AI Logic جميع عمليات الضبط التالية:

  • يحمي موفّرَي خدمة "Gemini API": Gemini Developer API وVertex AI Gemini API.

  • يحمي جميع الطُرز المتوافقة، سواء طُرز Gemini أو طُرز Imagen.

تتيح App Check أيضًا الحماية من إعادة الاستخدام، ما يعني أنّه لا يمكن استخدام الرمز المميّز App Check إلا مرة واحدة.

ملخّص شامل لطريقة عمل App Check

باستخدام App Check، تستخدم الأجهزة التي تشغّل تطبيقك موفّرًا لخدمة إثبات صحة التطبيق أو الجهاز يتحقّق من أحد الأمرين التاليين أو كليهما:

  • الطلبات صادرة من تطبيقك الأصلي
  • الطلبات صادرة من جهاز أصلي لم يتم التلاعب به

يتم إرفاق شهادة التصديق هذه بكل طلب يقدّمه تطبيقك باستخدام إحدى حِزم Firebase AI Logic SDK. عند تفعيل خيار فرض App Check، سيتم رفض الطلبات الواردة من الأجهزة التي لا تتضمّن شهادة مصادقة صالحة، بالإضافة إلى أي طلبات واردة من تطبيق أو منصة لم تمنحها الإذن.

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

يمكنك العثور على معلومات تفصيلية عن App Check في المستندات الخاصة به، بما في ذلك الحصص والحدود.

إعداد App Check

توفّر مستندات App Check أوصافًا تفصيلية لمقدّمي خدمات التصديق بالإضافة إلى تعليمات تفصيلية حول التنفيذ.

  1. اختَر مقدّم خدمة شهادات إثبات صحة تلقائيًا، واتّبِع تعليمات التنفيذ في الروابط التالية:

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

  2. (مطلوب) فعِّل App Check قبل إرسال تطبيقك إلى نظام تحكّم في رمز المصدر متاح للجميع، أو مشاركة تطبيقك، أو إتاحته للجميع.

  3. (يُنصح به) يمكنك تعزيز الحماية من خلال إضافة الحماية من إعادة التشغيل، ما يعني أنّه لا يمكن استخدام الرمز المميز App Check إلا مرة واحدة.

تعزيز الحماية من خلال إضافة ميزة "الحماية من إعادة التشغيل"

ننصح باستخدام أحدث إصدارات حزمة SDK، ولكن احرص على استخدام أحد هذه الإصدارات على الأقل للاستفادة من ميزة الحماية من إعادة التشغيل:
الإصدار 12.2.0 أو إصدار أحدث لمنصات Apple | الإصدار 34.14.0 أو إصدار أحدث من Android BoM (الإصدار 19.1.0 أو إصدار أحدث من App Check) | الإصدار 12.14.0 أو إصدار أحدث من الويب | الإصدار 4.15.0 أو إصدار أحدث من Flutter (الإصدار 4.10.0 أو إصدار أحدث من App Check) | الإصدار 13.12.0 أو إصدار أحدث من Unity

تستخدم App Check تلقائيًا رموز الجلسات التي تتضمّن مدة بقاء قابلة للضبط تتراوح بين 30 دقيقة و7 أيام. يتم تخزين رموز الجلسات المميزة هذه مؤقتًا من خلال حزمة تطوير البرامج (SDK) الخاصة بـ App Check، ويتم إرسالها مع الطلبات الواردة من تطبيقك، ويمكن إعادة استخدامها إلى أن تنتهي مدة البقاء (TTL). يُعدّ استخدام رموز الجلسات المميزة حماية أساسية.

ومع ذلك، يمكنك تعزيز الحماية إلى ما هو أبعد من هذه الحماية الأساسية من خلال فرض الحماية من إعادة التشغيل التي تستخدم رموزًا مميزة ذات استخدام محدود بدلاً من ذلك. عند فرض حماية من إعادة التشغيل، يحدث ما يلي:

  • ستحظر App Check الطلبات إلى Firebase AI Logic التي تستخدم رموز الجلسات. بدلاً من ذلك، لن يسمح App Check بتقديم طلب إلى Firebase AI Logic إلا إذا كان يستخدم رمزًا مميزًا جديدًا محدود الاستخدام.

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

  • تنشئ حزمة تطوير البرامج (SDK) الخاصة بخدمة App Check رمزًا مميزًا جديدًا محدود الاستخدام لكل طلب على حدة. يُرجى العِلم أنّ هذه العملية يمكن أن تؤثّر في طلباتك من خلال إضافة بعض وقت الاستجابة، وقد تؤثّر أحيانًا في التكلفة (حسب مزوّد شهادة الإثبات).

إعداد ميزة "الحماية من إعادة التشغيل" وفرض استخدامها

انقر على مزوّد Gemini API لعرض المحتوى والرمز البرمجي الخاصين بالمزوّد على هذه الصفحة.

في ما يلي كيفية إعداد ميزة "الحماية من إعادة التشغيل" وتفعيلها:

  1. إذا لم يسبق لك إجراء ذلك، عليك تنفيذ App Check وتفعيل فرض App Check لتطبيقك.

  2. فعِّل استخدام الرموز المميّزة ذات الاستخدام المحدود.

    في تطبيقك أثناء إنشاء مثيل، اضبط المَعلمة useLimitedUseAppCheckTokens على true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. فرض الحماية من إعادة الإرسال:

    1. في قاعدة الرموز البرمجية لتطبيقك، تأكَّد من أنّك فعّلت استخدام الرموز المميزة ذات الاستخدام المحدود (راجِع الخطوة السابقة).

    2. في وحدة تحكّم Firebase، انتقِل إلى الأمان > فحص التطبيقات.

    3. وسِّع عرض المقاييس الخاص بـ Firebase AI Logic.

    4. تأكَّد من أنّ الحماية الأساسية مفروضة، ثم انقر على متابعة.

    5. بالنسبة إلى الحماية من إعادة التشغيل، اختَر غير مفروضة (مراقبة فقط) أو مفروضة.

      ضَع في اعتبارك ما يلي لتحديد الوقت المناسب لفرض الحماية من إعادة التشغيل:

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

      • يمكنك مراقبة مقياس لم يتم التحقّق منه: رمز مميّز تمت إعادة استخدامه على وجه التحديد، وهو عدد الطلبات التي تتضمّن رمزًا مميّزًا سبق استخدامه في طلب سابق. يمكنك تتبُّع هذا المقياس في Firebase Console (انتقِل إلى علامة التبويب الأمان > فحص التطبيقات > واجهات برمجة التطبيقات).

        إذا كان جزء كبير من الطلبات الحديثة يندرج ضمن هذه الفئة، يمكنك تجنُّب إيقاف التطبيق مؤقتًا للمستخدمين، ويمكنك الانتظار إلى حين أن يحدِّث المزيد من المستخدمين تطبيقك إلى إصدار يستخدم الرموز المميزة ذات الاستخدام المحدود.

فهم كيفية تكامل Firebase AI Logic مع App Check

لاستخدام حِزم تطوير البرامج (SDK)، يجب تفعيل واجهة برمجة التطبيقات Firebase AI Logic (firebasevertexai.googleapis.com) في مشروع Firebase.Firebase AI Logic ويرجع ذلك إلى أنّ الطلبات التي يتم إجراؤها من خلال حِزم تطوير البرامج (SDK) الخاصة بـ Firebase AI Logic يتم إرسالها أولاً إلى خادم Firebase AI Logic، الذي يعمل كبوابة وكيل يتم فيها التحقّق من Firebase App Check قبل السماح للطلب بالمتابعة إلى الخلفية الخاصة بموفّر "Gemini API" الذي اخترته وإلى واجهات برمجة التطبيقات للوصول إلى نماذج Gemini وImagen.