وقتی مستقیماً از یک برنامه تلفن همراه یا وب (مثلاً 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 شرح مفصلی از ارائهدهندگان گواهی و همچنین دستورالعملهای پیادهسازی دقیق ارائه میدهد.
یک ارائهدهندهی گواهی پیشفرض انتخاب کنید و دستورالعملهای پیادهسازی را در لینکهای زیر دنبال کنید:
- پلتفرمهای اپل : DeviceCheck یا App Attest
- اندروید : بازی Integrity
- وب : reCAPTCHA Enterprise
- فلاتر : از تمام ارائهدهندگان پیشفرض بالا پشتیبانی میکند
اگر از نسخههای قدیمیتر افزونه استفاده میکنید، به یادداشت مربوط به نمونهسازی ویژه در زیر برای Flutter و App Check مراجعه کنید. - یونیتی : از تمام ارائه دهندگان پیشفرض بالا پشتیبانی میکند.
توجه داشته باشید که اگر هیچ یک از ارائهدهندگان گواهی پیشفرض برای نیازهای شما کافی نیستند، میتوانید یک ارائهدهنده سفارشی پیادهسازی کنید که از یک ارائهدهنده گواهی شخص ثالث یا تکنیکهای گواهی خودتان استفاده میکند.
(الزامی) قبل از اینکه برنامه خود را در یک سیستم کنترل کد منبع عمومی قرار دهید، برنامه خود را به اشتراک بگذارید یا برنامه خود را در دسترس عموم قرار دهید ، اجرای App Check را فعال کنید .
(توصیه میشود) با افزودن محافظت در برابر بازپخش ، محافظت را افزایش دهید ، به این معنی که یک توکن App Check فقط یک بار قابل استفاده است.
برای مشاهده محتوا و کد مخصوص ارائهدهنده در این صفحه، روی ارائهدهنده API Gemini خود کلیک کنید. |
این نمونهسازی ویژه فقط در صورتی مورد نیاز است که برنامه شما از افزونه Flutter firebase_ai نسخه 3.11.0 یا پایینتر (BoM نسخه 4.12.0 یا پایینتر) استفاده کند. اگر برنامه شما از نسخه جدیدتر افزونه استفاده میکند، این نمونهسازی ویژه مورد نیاز نیست.
اگر اجرای App Check را فعال کنید، در برنامههای Flutter که از نسخههای قدیمیتر افزونه استفاده میکنند، باید App Check در طول نمونهسازی به صورت صریح ارسال کنید، مانند زیر:
// ...
// During instantiation, enable usage of limited-use tokens
final ai = await FirebaseAI.googleAI(
// For Flutter plugin v3.11.0 or lower (BoM v4.12.0 or lower), pass in App Check explicitly.
appCheck: FirebaseAppCheck.instance,
useLimitedUseAppCheckTokens: true,
);
// ...
افزایش حفاظت با افزودن محافظت در برابر بازپخش
| 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) قابل تنظیمی بین
با این حال، میتوانید با اجرای محافظت در برابر بازپخش ، که به جای آن از توکنهای با کاربرد محدود استفاده میکند، محافظت را فراتر از این محافظت اولیه افزایش دهید. وقتی محافظت در برابر بازپخش اعمال میشود، موارد زیر اتفاق میافتد:
App Check درخواستهایی را که از توکنهای نشست (session tokens) برای Firebase AI Logic استفاده میکنند، مسدود میکند. در عوض، App Check فقط در صورتی به درخواستهایی که از یک توکن با کاربرد محدود (limited-use token) تازه ایجاد شده استفاده میکنند، اجازهی ارسال میدهد.
پس از تأیید توکن با کاربرد محدود، توکن مصرف میشود تا فقط یک بار قابل استفاده باشد که از حملات بازپخش جلوگیری میکند.
کیت App Check برای هر درخواست، یک توکن با کاربرد محدود جدید تولید میکند. توجه داشته باشید که این فرآیند میتواند با افزایش تأخیر و گاهی اوقات هزینه (بسته به ارائهدهنده گواهی شما) بر درخواستهای شما تأثیر بگذارد.
تنظیم و اجرای محافظت در برابر بازپخش
برای مشاهده محتوا و کد مخصوص ارائهدهنده در این صفحه، روی ارائهدهنده API Gemini خود کلیک کنید. |
در اینجا نحوه تنظیم و اجرای محافظت در برابر بازپخش آمده است:
اگر قبلاً این کار را نکردهاید، App Check پیادهسازی کنید و اجرای App Check را برای برنامه خود فعال کنید .
فعال کردن استفاده از توکنهای با کاربرد محدود.
در برنامه خود، هنگام نمونهسازی، پارامتر
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 ); // ...محافظت در برابر بازپخش را اعمال کنید.
در کدبیس برنامهتان، مطمئن شوید که استفاده از توکنهای با کاربرد محدود را فعال کردهاید (به مرحله قبل مراجعه کنید).
در کنسول Firebase ، به مسیر Security > App Check بروید.
نمای معیارها را برای Firebase AI Logic گسترش دهید.
مطمئن شوید که گزینهی Baseline Protection فعال است (Enforced )، سپس روی Continue کلیک کنید.
برای محافظت در برابر بازپخش، یکی از گزینههای 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 ارسال شود، انجام میشود.