جلوگیری از سوءاستفاده از API جمینی با بررسی برنامه فایربیس

وقتی مستقیماً از یک برنامه تلفن همراه یا وب (مثلاً APIهایی که امکان دسترسی به مدل‌های هوش مصنوعی مولد را فراهم می‌کنند) یک API را فراخوانی می‌کنید، آن API در برابر سوءاستفاده توسط کلاینت‌های غیرمجاز آسیب‌پذیر است. برای کمک به محافظت از این APIها در برابر سوءاستفاده، می‌توانید از Firebase App Check استفاده کنید تا تأیید کنید که تمام فراخوانی‌های API ورودی از برنامه واقعی شما و یک دستگاه دستکاری نشده هستند.

Firebase AI Logic یک دروازه پروکسی ارائه می‌دهد که به شما امکان می‌دهد با Firebase App Check ادغام شوید و از APIهای مدل هوش مصنوعی مولد که توسط برنامه‌های تلفن همراه و وب شما فراخوانی می‌شوند، محافظت کنید. استفاده از 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 enforcement را فعال می‌کنید، درخواست‌های کلاینت‌هایی که گواهی معتبر نداشته باشند، رد می‌شوند، همانطور که هر درخواستی که از برنامه یا پلتفرمی که شما آن را مجاز نکرده‌اید، ارسال شود، رد خواهد شد.

هنگام تنظیم App Check ، اضافه کردن محافظت در برابر تکرار را در نظر بگیرید، که باعث می‌شود توکن‌های App Check فقط یک بار مصرف باشند . این گزینه محافظت پیشرفته‌تری فراتر از محافظت پایه ارائه می‌دهد و به شما امکان می‌دهد سطح مناسبی از محافظت را برای برنامه و موارد استفاده خود تعیین کنید.

می‌توانید اطلاعات دقیقی در مورد App Check ، از جمله سهمیه‌ها و محدودیت‌های آن، را در مستندات آن بیابید.

App Check تنظیم کنید

مستندات App Check شرح مفصلی از ارائه‌دهندگان گواهی و همچنین دستورالعمل‌های پیاده‌سازی دقیق ارائه می‌دهد.

  1. یک ارائه‌دهنده‌ی گواهی پیش‌فرض انتخاب کنید و دستورالعمل‌های پیاده‌سازی را در لینک‌های زیر دنبال کنید:

    توجه داشته باشید که اگر هیچ یک از ارائه‌دهندگان گواهی پیش‌فرض برای نیازهای شما کافی نیستند، می‌توانید یک ارائه‌دهنده سفارشی پیاده‌سازی کنید که از یک ارائه‌دهنده گواهی شخص ثالث یا تکنیک‌های گواهی خودتان استفاده می‌کند.

  2. (الزامی) قبل از اینکه برنامه خود را در یک سیستم کنترل کد منبع عمومی قرار دهید، برنامه خود را به اشتراک بگذارید یا برنامه خود را در دسترس عموم قرار دهید ، اجرای App Check را فعال کنید .

  3. (توصیه می‌شود) با افزودن محافظت در برابر بازپخش ، محافظت را افزایش دهید ، به این معنی که یک توکن App Check فقط یک بار قابل استفاده است.

افزایش حفاظت با افزودن محافظت در برابر بازپخش

We recommend using the latest SDK versions, but make sure you're using at minimum one of these versions to use replay protection:
پلتفرم‌های اپل نسخه ۱۲.۲.۰+ | اندروید بوم نسخه ۳۴.۱۴.۰+ ( App Check نسخه ۱۹.۱.۰+) | وب نسخه ۱۲.۱۴.۰+ | فلاتر نسخه ۴.۱۵.۰+ ( App Check نسخه ۴.۱۰.۰+) | یونیتی نسخه ۱۳.۱۲.۰+

به طور پیش‌فرض، App Check از توکن‌های جلسه استفاده می‌کند که زمان ماندگاری (TTL) قابل تنظیمی بین 30 دقیقه تا 7 روز دارند. این توکن‌های جلسه توسط App Check SDK ذخیره می‌شوند، همراه با درخواست‌های برنامه شما ارسال می‌شوند و تا زمان انقضای TTL آنها قابل استفاده مجدد هستند. استفاده از توکن‌های جلسه به عنوان حفاظت پایه در نظر گرفته می‌شود.

با این حال، می‌توانید با اجرای محافظت در برابر بازپخش ، که به جای آن از توکن‌های با کاربرد محدود استفاده می‌کند، محافظت را فراتر از این محافظت اولیه افزایش دهید. وقتی محافظت در برابر بازپخش اعمال می‌شود، موارد زیر اتفاق می‌افتد:

  • App Check درخواست‌هایی را که از توکن‌های نشست (session tokens) برای Firebase AI Logic استفاده می‌کنند، مسدود می‌کند. در عوض، App Check فقط در صورتی به درخواست‌هایی که از یک توکن با کاربرد محدود (limited-use token) تازه ایجاد شده استفاده می‌کنند، اجازه‌ی ارسال می‌دهد.

  • پس از تأیید توکن با کاربرد محدود، توکن مصرف می‌شود تا فقط یک بار قابل استفاده باشد که از حملات بازپخش جلوگیری می‌کند.

  • کیت App Check برای هر درخواست، یک توکن با کاربرد محدود جدید تولید می‌کند. توجه داشته باشید که این فرآیند می‌تواند با افزایش تأخیر و گاهی اوقات هزینه (بسته به ارائه‌دهنده گواهی شما) بر درخواست‌های شما تأثیر بگذارد.

تنظیم و اجرای محافظت در برابر بازپخش

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

در اینجا نحوه تنظیم و اجرای محافظت در برابر بازپخش آمده است:

  1. اگر قبلاً این کار را نکرده‌اید، App Check پیاده‌سازی کنید و اجرای App Check را برای برنامه خود فعال کنید .

  2. فعال کردن استفاده از توکن‌های با کاربرد محدود.

    در برنامه خود، هنگام نمونه‌سازی، پارامتر useLimitedUseAppCheckTokens را روی true تنظیم کنید:

    سویفت

    
    // ...
    
    // 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,
    );
    
    // ...
    
    

    وحدت

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. محافظت در برابر بازپخش را اعمال کنید.

    1. در کدبیس برنامه‌تان، مطمئن شوید که استفاده از توکن‌های با کاربرد محدود را فعال کرده‌اید (به مرحله قبل مراجعه کنید).

    2. در کنسول Firebase ، به مسیر Security > App Check بروید.

    3. نمای معیارها را برای Firebase AI Logic گسترش دهید.

    4. مطمئن شوید که گزینه‌ی Baseline Protection فعال است (Enforced )، سپس روی Continue کلیک کنید.

    5. برای محافظت در برابر بازپخش، یکی از گزینه‌های Unenforced (فقط نظارت) یا Enforced را انتخاب کنید.

      برای تصمیم‌گیری در مورد زمان اعمال محافظت در برابر بازپخش، موارد زیر را در نظر بگیرید:

      • اگر تعداد قابل توجهی از کاربران شما احتمالاً از نسخه‌های قبلی برنامه شما بدون فعال کردن توکن‌های با کاربرد محدود استفاده می‌کنند، نظارت بر درخواست‌های شما توصیه می‌شود. اگر فوراً محافظت از بازپخش را اعمال کنید، درخواست‌های این کاربران مسدود خواهد شد.

      • شما می‌توانید به‌طور خاص معیار Unverified: Reused token را رصد کنید، که تعداد درخواست‌هایی است که توکنی دارند که قبلاً در درخواست قبلی استفاده شده است. این معیار را در کنسول Firebase رصد کنید (به تب Security > App Check > APIs بروید).

        اگر بخش قابل توجهی از درخواست‌های اخیر در این دسته قرار دارند، می‌توانید از ایجاد اختلال در کار کاربران جلوگیری کنید و برای اعمال محافظت در برابر تکرار، تا زمانی که کاربران بیشتری به نسخه‌ای از برنامه شما که از توکن‌های با کاربرد محدود استفاده می‌کند، به‌روزرسانی نشده‌اند، صبر کنید.

درک کنید که چگونه Firebase AI Logic با App Check ادغام می‌شود.

برای استفاده از SDK های Firebase AI Logic ، API مربوط به Firebase AI Logic ( firebasevertexai.googleapis.com ) باید در پروژه Firebase شما فعال باشد. دلیل این امر این است که درخواست‌های ارسالی توسط SDK های Firebase AI Logic ابتدا به سرور Firebase AI Logic ارسال می‌شوند، که به عنوان یک دروازه پروکسی عمل می‌کند و در آنجا تأیید Firebase App Check قبل از اینکه درخواست به backend ارائه دهنده " Gemini API " انتخابی شما و API ها برای دسترسی به مدل‌های Gemini و Imagen ارسال شود، انجام می‌شود.