全部产品
Search
文档中心

Web Application Firewall:Integrasi Anti-Bot SDK ke dalam aplikasi iOS

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengintegrasikan Anti-Bot SDK ke dalam aplikasi iOS. Dalam dokumen ini, Anti-Bot SDK disebut sebagai SDK. Sebelum mengaktifkan fitur Perlindungan Aplikasi dari Web Application Firewall (WAF) untuk aplikasi iOS Anda, Anda harus mengintegrasikan SDK ke dalam aplikasi tersebut.

Batasan

Aplikasi iOS Anda harus menggunakan iOS 9.0 atau yang lebih baru. Jika versi iOS lebih lama dari 9.0, Anda tidak dapat mengintegrasikan SDK ke dalam aplikasi iOS Anda.

Prasyarat

  • Fitur perlindungan aplikasi telah dibeli dan diaktifkan.

    Untuk informasi lebih lanjut, lihat Prosedur untuk Mengaktifkan Perlindungan Aplikasi.

  • SDK untuk aplikasi iOS telah diperoleh.

    Untuk mendapatkan SDK untuk aplikasi iOS, ajukan Tiket untuk mendapatkan dukungan teknis.

    SDK mendukung dua versi: Identifier for Advertising (IDFA) dan non-IDFA. File SDK berikut disediakan untuk masing-masing versi:

    • AliTigerTally_IDFA.framework

    • AliTigerTally_NOIDFA.framework

    Jika Anda menggunakan versi IDFA, kami sarankan untuk mengintegrasikan SDK versi AliTigerTally_IDFA ke dalam aplikasi iOS Anda. Jika Anda menggunakan versi non-IDFA, kami sarankan untuk mengintegrasikan SDK versi AliTigerTally_NOIDFA ke dalam aplikasi iOS Anda.

  • Kunci autentikasi SDK, yaitu app key, telah diperoleh.

    Untuk mendapatkan app key, masuk ke Konsol Web Application Firewall dan pilih Protection Configurations > Website Protection. Pada tab Manajemen Bot halaman Perlindungan Situs Web, aktifkan App Protection dan klik Obtain and Copy Appkey. Kunci autentikasi SDK digunakan untuk mengirim permintaan inisialisasi SDK. Kunci ini harus disertakan dalam kode integrasi.

    Catatan

    Setiap akun Alibaba Cloud memiliki app key unik, yang dapat digunakan untuk semua nama domain di instance WAF Anda. Anda dapat menggunakan app key, baik Anda mengintegrasikan SDK ke dalam aplikasi Android maupun aplikasi iOS.

    App Protection

    Contoh kunci autentikasi:

    ****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

Informasi Latar Belakang

SDK digunakan untuk menandatangani permintaan yang dikirim oleh klien aplikasi. WAF memverifikasi tanda tangan permintaan untuk mendeteksi dan memblokir permintaan jahat.

(Opsional) Buat proyek uji iOS

Anda dapat mengintegrasikan SDK langsung ke proyek iOS aktual. Namun, Anda juga dapat membuat proyek uji iOS untuk mempelajari proses integrasi sebelum mengintegrasikan SDK ke dalam proyek utama.

Dalam contoh ini, Xcode digunakan untuk membuat proyek uji iOS.

Gambar berikut menunjukkan proyek uji bernama TigerTally_sdk_test.Test project

Prosedur

  1. Gunakan Xcode untuk membuka proyek uji iOS dan masuk ke direktori file.

  2. Salin SDK ke proyek.

  3. Tambahkan pustaka dependensi ke proyek.

    Pustaka dependen

    Diperlukan untuk versi Non-IDFA

    Diperlukan untuk versi IDFA

    libc++.tbd

    Ya

    Ya

    CoreTelephony.framework

    Ya

    Ya

    libresolv.9.tbd

    Ya

    Ya

    AdSupport.framework

    Tidak

    Ya

  4. Klik tab Build Settings dan tambahkan flag linker -ObjC ke pengaturan Other Linker Flags.

  5. Tambahkan kode integrasi.

    1. Tambahkan file header ke file sumber tempat Anda ingin mengintegrasikan SDK.

      Contoh kode:

      • Objective-C

        // Versi Non-IDFA 
        #import <AliTigerTally_NOIDFA/AliTigerTally.h> 
        
        // Versi IDFA 
        #import <AliTigerTally_IDFA/AliTigerTally.h>
      • Swift

        // Buat file header. 
        #ifndef TigerTally_sdk_Swift_h
        #define TigerTally_sdk_Swift_h
        
        // Versi Non-IDFA 
        #import <AliTigerTally_NOIDFA/AliTigerTally.h> 
        // Versi IDFA 
        #import <AliTigerTally_IDFA/AliTigerTally.h>
        
        #endif /* TigerTally_sdk_Swift_h */

        Tambahkan file header yang Anda buat ke opsi Objective-C Bridging Header di Build Settings.

    2. Tentukan ID pengguna.

      Sintaks:

      -(void)setAccount:(NSString*)account

      Deskripsi: Menentukan ID pengguna yang ingin Anda sertakan dalam permintaan. Ini memungkinkan konfigurasi kebijakan perlindungan WAF secara lebih efisien.

      Parameter: <account>, yang menentukan ID pengguna. Tipe data: NSString*. Kami sarankan untuk memasukkan ID pengguna yang dimasking.

      Nilai balik: tidak ada.

      Contoh kode:

      • Objective-C

        // Dalam contoh ini, testAccount digunakan sebagai ID pengguna. 
        // Anda tidak perlu memanggil fungsi setAccount untuk menentukan ID pengguna untuk pengguna tamu. Anda dapat langsung memanggil fungsi initialize untuk menginisialisasi SDK. 
        [[AliTigerTally sharedInstance] setAccount:@"testAccount"]; 
      • Swift

        // Dalam contoh ini, testAccount digunakan sebagai ID pengguna. 
        // Anda tidak perlu memanggil fungsi setAccount untuk menentukan ID pengguna untuk pengguna tamu. Anda dapat langsung memanggil fungsi initialize untuk menginisialisasi SDK. 
        AliTigerTally.sharedInstance().setAccount("testAccount")
    3. Inisialisasi SDK.

      Sintaks:

      -(bool)initialize:(NSString*)appKey

      Deskripsi: Menginisialisasi SDK dan mengumpulkan informasi terminal. Jika Anda ingin mengumpulkan ulang informasi terminal, panggil fungsi initialize.

      Parameter: <appKey>, yang menentukan kunci autentikasi SDK. Tipe data: NSString*.

      Nilai balik: Nilai tipe BOOLEAN dikembalikan. Nilai valid: true dan false. Nilai true menunjukkan bahwa inisialisasi berhasil. Nilai false menunjukkan bahwa inisialisasi gagal.

      Contoh kode:

      • Objective-C

        NSString *appKey=@"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****";
        if([[AliTigerTally sharedInstance]initialize:appKey]){
            NSLog(@"Inisialisasi berhasil.");
         }else{
             NSLog(@"Inisialisasi gagal.");
        }
      • Swift

        let binit = AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****")
        if(binit){
            NSLog("Inisialisasi berhasil.");
        }else{
            NSLog("Inisialisasi gagal.");
        }
    4. Tandatangani permintaan.

      Sintaks:

      -(NSString*)vmpSign:(NSData*)inputBody

      Deskripsi: Menandatangani data input dan mengembalikan string tanda tangan.

      Parameter: <inputBody>, yang menentukan data untuk ditandatangani. Tipe data: NSData*.

      Nilai valid:

      • Nilai balik dalam skenario umum: String tanda tangan dikembalikan. Tipe data: NSString*.

      • Nilai balik dalam skenario abnormal:

        Nilai balik

        Deskripsi

        Solusi

        you must call initialize

        Fungsi initialize belum dipanggil.

        Panggil fungsi initialize untuk menginisialisasi SDK. Kemudian, panggil fungsi vmpSign.

        you must input body

        Data untuk ditandatangani belum ditentukan.

        Saat Anda memanggil fungsi vmpSign, konfigurasikan parameter <inputBody> untuk menentukan data untuk ditandatangani.

        NULL

        Inisialisasi belum selesai dan data gagal ditandatangani.

        Panggil fungsi vmpSign lagi.

      Contoh kode:

      Catatan

      Dalam contoh kode berikut, string tanda tangan didefinisikan sebagai wToken.

      • Objective-C

        if(![[AliTigerTally sharedInstance]initialize:@"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****"])
        {
                NSLog(@"Inisialisasi gagal.");
                return;
        }
        NSString *signBody =@"hello";
        NSString *wToken= [[AliTigerTally sharedInstance] vmpSign:[signBody dataUsingEncoding:NSUTF8StringEncoding]];
        NSLog(@"wToken== %@",wToken);
      • Swift

        if(!AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****")){
            NSLog("Inisialisasi gagal.");
           return
        } 
        let signBody = "hello"
        var token = AliTigerTally.sharedInstance().vmpSign(signData)
        NSLog(token);
    5. Tambahkan string tanda tangan ke header protokol dan kirim permintaan ke server aplikasi iOS Anda.

      String tanda tangan dikirimkan ke server dalam acara bisnis penting, seperti permintaan untuk acara logon klien. WAF menerima permintaan yang dikirim ke server, mengurai string tanda tangan wToken untuk mengidentifikasi dan memblokir permintaan jahat, kemudian meneruskan permintaan normal ke server.

      Contoh kode:

      • Objective-C

        NSURL * url = [NSURL URLWithString:@"https://xxxxxx/test?id=123"];
        NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
        [request setValue: wToken forHTTPHeaderField: @"wToken"];
        request.HTTPMethod=@"post";
        request.HTTPBody=[signBody dataUsingEncoding:NSUTF8StringEncoding];
        NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if(error){
                NSLog(@"Data gagal dikirim.%@", error);
            }else
            {
                NSLog(@"Data dikirim.");
            }
        }];
        [dataTask resume];
      • Swift

        guard let url = URL(string: "https://xxxxxx/test?id=123") else { return }
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.addValue(token, forHTTPHeaderField: "wToken")
        let session = URLSession.shared
        session.dataTask(with: request) { (data, response, error) in
            if let data = data {
                do {
                    print("OK")
                } catch {
                    print("ERROR")
                    print(error)
                }
            }
        
        }.resume()
        }