از منابع باطن سفارشی با App Check در پلتفرم های اپل محافظت کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
میتوانید App Check برای محافظت از منابع پشتیبان سفارشی غیر Google برای برنامهتان، مانند باطن میزبانی شده خودتان، استفاده کنید. برای انجام این کار، باید هر دو مورد زیر را انجام دهید:
مشتری برنامه خود را تغییر دهید تا یک نشانه App Check به همراه هر درخواست به باطن شما ارسال شود، همانطور که در این صفحه توضیح داده شده است.
توکنهای App Check با درخواستهای Backend ارسال کنید
برای اطمینان از اینکه درخواست های پشتیبان شما شامل یک نشانه معتبر، منقضی نشده، App Check است، هر درخواست را در یک تماس با AppCheck.token() قرار دهید. کتابخانه App Check توکن را در صورت لزوم بازخوانی میکند و میتوانید در بلوک تکمیل متد به رمز دسترسی داشته باشید.
هنگامی که یک توکن معتبر دارید، آن را همراه با درخواست به باطن خود ارسال کنید. جزئیات نحوه انجام این کار به شما بستگی دارد، اما نشانههای App Check را به عنوان بخشی از URLها، از جمله در پارامترهای پرس و جو، ارسال نکنید ، زیرا این باعث میشود آنها در برابر نشت تصادفی و رهگیری آسیبپذیر باشند. مثال زیر توکن را در یک هدر HTTP سفارشی می فرستد که رویکرد توصیه شده است.
سویفت
do{lettoken=tryawaitAppCheck.appCheck().token(forcingRefresh:false)// Get the raw App Check token string.lettokenString=token.token// Include the App Check token with requests to your server.leturl=URL(string:"https://yourbackend.example.com/yourApiEndpoint")!varrequest=URLRequest(url:url)request.httpMethod="GET"request.setValue(tokenString,forHTTPHeaderField:"X-Firebase-AppCheck")lettask=URLSession.shared.dataTask(with:request){data,response,errorin// Handle response from your backend.}task.resume()}catch(leterror){print("Unable to retrieve App Check token: \(error)")return}
هدف-C
[[FIRAppCheckappCheck]tokenForcingRefresh:NOcompletion:^(FIRAppCheckToken*_Nullabletoken,NSError*_Nullableerror){if(error!=nil){// Handle any errors if the token was not retrieved.NSLog(@"Unable to retrieve App Check token: %@",error);return;}if(token==nil){NSLog(@"Unable to retrieve App Check token.");return;}// Get the raw App Check token string.NSString*tokenString=token.token;// Include the App Check token with requests to your server.NSURL*url=[[NSURLalloc]initWithString:@"https://yourbackend.example.com/yourApiEndpoint"];NSMutableURLRequest*request=[[NSMutableURLRequestalloc]initWithURL:url];[requestsetHTTPMethod:@"GET"];[requestsetValue:tokenStringforHTTPHeaderField:@"X-Firebase-AppCheck"];NSURLSessionDataTask*task=[[NSURLSessionsharedSession]dataTaskWithRequest:requestcompletionHandler:^(NSData*_Nullabledata,NSURLResponse*_Nullableresponse,NSError*_Nullableerror){// Handle response from your backend.}];[taskresume];}];
محافظت از پخش مجدد (بتا)
هنگام درخواست به نقطه پایانی که محافظت از پخش مجدد را برای آن فعال کرده اید، درخواست را به جای token()limitedUseToken() () قرار دهید:
تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی."],[],[],null,["You can use App Check to protect non-Google custom backend resources for\nyour app, like your own self-hosted backend. To do so, you'll need to do both of\nthe following:\n\n- Modify your app client to send an App Check token along with each request to your backend, as described on this page.\n- Modify your backend to require a valid App Check token with every request, as described in [Verify App Check tokens from a custom backend](/docs/app-check/custom-resource-backend).\n\nBefore you begin\n\nAdd App Check to your app, using either [App Attest](/docs/app-check/ios/app-attest-provider),\n[DeviceCheck](/docs/app-check/ios/devicecheck-provider), or a [custom provider](/docs/app-check/ios/custom-provider).\n\nSend App Check tokens with backend requests\n\nTo ensure your backend requests include a valid, unexpired, App Check token,\nwrap each request in a call to `AppCheck.token()`. The App Check library\nwill refresh the token if necessary, and you can access the token in the\nmethod's completion block.\n\nOnce you have a valid token, send it along with the request to your backend. The\nspecifics of how you accomplish this are up to you, but *don't send\nApp Check tokens as part of URLs*, including in query parameters, as this\nmakes them vulnerable to accidental leakage and interception. The following\nexample sends the token in a custom HTTP header, which is the recommended\napproach. \n\nSwift \n\n```swift\ndo {\n let token = try await AppCheck.appCheck().token(forcingRefresh: false)\n\n // Get the raw App Check token string.\n let tokenString = token.token\n\n // Include the App Check token with requests to your server.\n let url = URL(string: \"https://yourbackend.example.com/yourApiEndpoint\")!\n var request = URLRequest(url: url)\n request.httpMethod = \"GET\"\n request.setValue(tokenString, forHTTPHeaderField: \"X-Firebase-AppCheck\")\n\n let task = URLSession.shared.dataTask(with: request) { data, response, error in\n // Handle response from your backend.\n }\n task.resume()\n} catch(let error) {\n print(\"Unable to retrieve App Check token: \\(error)\")\n return\n}\n```\n\nObjective-C \n\n```objective-c\n[[FIRAppCheck appCheck] tokenForcingRefresh:NO\n completion:^(FIRAppCheckToken * _Nullable token,\n NSError * _Nullable error) {\n if (error != nil) {\n // Handle any errors if the token was not retrieved.\n NSLog(@\"Unable to retrieve App Check token: %@\", error);\n return;\n }\n if (token == nil) {\n NSLog(@\"Unable to retrieve App Check token.\");\n return;\n }\n\n // Get the raw App Check token string.\n NSString *tokenString = token.token;\n\n // Include the App Check token with requests to your server.\n NSURL *url = [[NSURL alloc] initWithString:@\"https://yourbackend.example.com/yourApiEndpoint\"];\n NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];\n [request setHTTPMethod:@\"GET\"];\n [request setValue:tokenString forHTTPHeaderField:@\"X-Firebase-AppCheck\"];\n\n NSURLSessionDataTask *task =\n [[NSURLSession sharedSession] dataTaskWithRequest:request\n completionHandler:^(NSData * _Nullable data,\n NSURLResponse * _Nullable response,\n NSError * _Nullable error) {\n // Handle response from your backend.\n }];\n [task resume];\n}];\n```\n\nReplay protection (beta)\n\nWhen making a request to an endpoint for which you've enabled\n[replay protection](/docs/app-check/custom-resource-backend#replay-protection),\nwrap the request in a call to `limitedUseToken()` instead of `token()`: \n\nSwift \n\n AppCheck.appCheck().limitedUseToken() { token, error in\n // ...\n }\n\nObjective-C \n\n [[FIRAppCheck appCheck] limitedUseTokenWithCompletion:^(FIRAppCheckToken * _Nullable token,\n NSError * _Nullable error) {\n // ...\n }];"]]