全部产品
Search
文档中心

Web Application Firewall:Integrasikan Anti-Bot SDK ke dalam aplikasi Android

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengintegrasikan Anti-Bot SDK ke dalam aplikasi Android. Dalam topik ini, Anti-Bot SDK disebut sebagai SDK. Sebelum mengaktifkan fitur perlindungan aplikasi untuk aplikasi Android Anda, Anda harus mengintegrasikan SDK ke dalam aplikasi tersebut.

Batasan

Aplikasi Android Anda harus menggunakan Android 16 atau yang lebih baru. Jika versi API lebih lama dari 16, SDK tidak akan berfungsi sebagaimana mestinya.

Prasyarat

  • Fitur perlindungan aplikasi telah dibeli dan diaktifkan.

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

  • SDK untuk aplikasi Android telah diperoleh.

    Setelah membeli fitur perlindungan aplikasi, Anda dapat menghubungi dukungan teknis di grup layanan DingTalk untuk mendapatkan SDK. Anda juga dapat mengirimkan Halaman Tiket Baru untuk mendapatkan SDK.

    SDK untuk aplikasi Android mencakup file AAR, dengan format penamaan: AliTigerTally_X.Y.Z.aar. X.Y.Z menunjukkan nomor versi file tersebut.

  • 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 dan harus disertakan dalam kode integrasi.

    Catatan

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

    App Protection

    Contoh kunci autentikasi:

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

Informasi Latar Belakang

SDK digunakan untuk menandatangani permintaan yang dikirim oleh aplikasi. Web Application Firewall (WAF) memverifikasi tanda tangan dalam permintaan untuk mengidentifikasi risiko dalam layanan aplikasi dan memblokir permintaan jahat.

(Opsional) Buat proyek uji Android

Anda dapat mengintegrasikan SDK ke dalam proyek Android nyata atau proyek uji Android untuk membiasakan diri dengan operasi integrasi sebelum menerapkannya pada proyek nyata.

Dalam contoh ini, gunakan Android Studio untuk membuat proyek uji Android.

Gambar berikut menunjukkan proyek uji bernama TigerTally_sdk_test. Test projectSebelum mengintegrasikan SDK ke dalam aplikasi, pastikan bahwa proyek uji berjalan seperti yang diharapkan. Check whether the test project is running

Prosedur

  1. Gunakan Android Studio untuk membuka proyek uji dan masuk ke direktori file.

  2. Referensikan file AAR.

    1. Salin file AliTigerTally.aar ke direktori libs. Anda juga dapat menyeret file ke direktori tersebut. Copy the file to the libs directory

    2. Buka file build.gradle dan modifikasi konfigurasi berdasarkan deskripsi berikut:

      • Tambahkan direktori libs sebagai sumber dependensi.

        repositories{
           flatDir {
             dirs 'libs'
           }
        }
      • Tambahkan dependensi kompilasi.

        Penting

        Ganti nomor versi (X.Y.Z) dalam kode berikut dengan nomor versi file AAR yang Anda peroleh.

        dependencies {
          compile(name: 'AliTigerTally_X.Y.Z', ext: 'aar')
        }
    3. Klik Sync Now untuk menyinkronkan modifikasi ke proyek.

  3. Referensikan file SO.

    Jika file SO sudah termasuk dalam proyek, lewati langkah ini. Jika tidak, tambahkan konfigurasi berikut ke file build.gradle:

    android {
        defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'x86', "armeabi-v7a"
            //abiFilters "armeabi-v7a"
          }
        }
    }
  4. Ajukan izin berikut untuk aplikasi.

    Izin

    Diperlukan

    Deskripsi

    android.permission.INTERNET

    Ya

    Menghubungkan ke Internet.

    android.permission.ACCESS_NETWORK_STATE

    Tidak

    Mendapatkan status jaringan perangkat.

    android.permission.ACCESS_WIFI_STATE

    Tidak

    Mendapatkan status koneksi Wi-Fi perangkat.

    android.permission.READ_PHONE_STATE

    Tidak

    Membaca status dan identitas perangkat.

    Penting

    Anda harus secara dinamis mengajukan izin ini untuk aplikasi Android 6.0 atau yang lebih baru.

    android.permission.BLUETOOTH

    Tidak

    Mendapatkan izin Bluetooth perangkat.

    android.permission.READ_EXTERNAL_STORAGE

    Tidak

    Membaca penyimpanan eksternal perangkat.

    Penting

    Anda harus secara dinamis mengajukan izin ini untuk aplikasi Android 6.0 atau yang lebih baru.

    android.permission.CHANGE_NETWORK_STATE

    Tidak

    Mengubah status jaringan perangkat.

  5. Tambahkan kode integrasi.

    1. Tentukan ID pengguna.

      Fungsi:

      int setAccount(String account);

      Deskripsi: Menentukan ID pengguna dalam permintaan, memungkinkan konfigurasi kebijakan perlindungan WAF secara lebih efisien.

      Parameter: <account>, menentukan ID pengguna. Tipe data: string. Disarankan untuk memasukkan ID pengguna yang telah dimasking.

      Nilai kembali: Nilai yang menunjukkan apakah pengaturan berhasil. Tipe data: int. Nilai 0 menunjukkan keberhasilan, sedangkan nilai -1 menunjukkan kegagalan.

      Contoh kode:

      final String account="account";
      TigerTallyAPI.setAccount(account); // Jika pengguna logon adalah tamu, Anda tidak perlu memanggil fungsi ini. Anda dapat langsung memanggil fungsi inisialisasi.
    2. Inisialisasi SDK.

      Fungsi:

      int init(Context context, String appkey, int type);

      Deskripsi: Menginisialisasi SDK dan melakukan pengumpulan informasi satu kali. Pengumpulan informasi satu kali memungkinkan pengumpulan informasi terminal sekali saja. Untuk pengumpulan ulang, panggil fungsi init.

      Pengumpulan informasi satu kali mendukung dua mode: pengumpulan data lengkap dan pengumpulan data tanpa bidang sensitif. Bidang sensitif mencakup imei, imsi, simSerial, wifiMac, wifiList, dan bluetoothMac pengguna. Untuk mengumpulkan bidang sensitif, Anda harus mendapatkan izin.

      Catatan

      Sebelum pengguna menyetujui kebijakan privasi aplikasi, gunakan mode kedua. Setelah persetujuan diberikan, gunakan mode pertama. Pengumpulan data lengkap membantu mengidentifikasi risiko.

      Parameter:

      • <context>: Menentukan konteks yang dilewatkan ke aplikasi.

      • <appkey>: Menentukan kunci autentikasi SDK. Tipe data: string.

      • <type>: Menentukan mode pengumpulan. Tipe data: CollectType. Nilai valid:

        • DEFAULT: Pengumpulan data lengkap.

        • NO_GRANTED: Pengumpulan data tanpa bidang sensitif.

        Nilai kembali: Nilai yang menunjukkan apakah inisialisasi berhasil. Tipe data: int. Nilai 0 menunjukkan keberhasilan, sedangkan nilai -1 menunjukkan kegagalan.

      Contoh kode:

      final String appkey="your_appkey";
      // Kumpulkan data lengkap. 
      int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.DEFAULT);
      // Kumpulkan data tanpa bidang sensitif. 
      int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.NOT_GRANTED);
      Log.d("AliSDK", "ret:" + ret);
    3. Tandatangani data permintaan.

      Fungsi:

      String vmpSign(int signType, byte[] input);

      Deskripsi: Menandatangani data input dan mengembalikan string tanda tangan.

      Parameter:

      • <signType>: Menentukan algoritma tanda tangan. Tipe data: int. Atur nilainya menjadi 1, yang menunjukkan penggunaan algoritma tanda tangan default.

      • <input>: Menentukan data yang akan ditandatangani. Tipe data: byte[].

        Dalam kebanyakan kasus, data yang akan ditandatangani adalah seluruh badan permintaan. Jika badan permintaan POST kosong atau badan permintaan GET digunakan, masukkan null atau array byte[] yang dikonversi dari string kosong. Contoh: "".getBytes("UTF-8").

      Nilai kembali: String tanda tangan. Tipe data: string.

      Contoh kode:

      Catatan

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

      String request_body = "i am the request body, encrypted or not!";
      String wToken = null;
      try {
          wToken = TigerTallyAPI.vmpSign(1, request_body.getBytes("UTF-8"));
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      }
      Log.d("AliSDK", "wToken:" + wToken);
    4. Tambahkan string tanda tangan ke header HTTP.

      Sebagai contoh, jika proyek Anda menggunakan kelas HttpURLConnection, Anda dapat menambahkan isi string tanda tangan wToken ke objek kelas HttpURLConnection.

      Contoh kode:

      String request_body = "i am the request body, encrypted or not!";
      new Thread(new Runnable() {
          @Override
          public void run() {
              try {
                  URL url = new URL("https://www.aliyundoc.com");
                  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                  conn.setReadTimeout(5000);
                  conn.setRequestMethod("POST");
                  // set info wToken ke header
                  conn.setRequestProperty("wToken", wToken);
                  OutputStream os = conn.getOutputStream();
                  // set info badan permintaan
                  byte[] requestBody = request_body.getBytes("UTF-8");
                  os.write(requestBody);
                  os.flush();
                  os.close();
                  int code = conn.getResponseCode();
                  Log.d("respCode", Integer.toString(code));
              } catch (MalformedURLException e) {
                  e.printStackTrace();
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              } catch (ProtocolException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          };
          }).start();
    5. Kirim permintaan yang menggunakan header HTTP baru ke server aplikasi.

      WAF menerima permintaan yang ditujukan ke server, mengurai string tanda tangan wToken untuk mengidentifikasi dan memblokir permintaan jahat, kemudian meneruskan permintaan normal ke server.

Ofuskan kode

Jika Anda menggunakan ProGuard untuk mengofuskan kode, Anda dapat menggunakan -keep untuk mengonfigurasi fungsi SDK. Ini membantu mencegah fungsi SDK dihapus.

Contoh kode:

-keep class com.aliyun.TigerTally.* {*;}