All Products
Search
Document Center

Web Application Firewall:Integrasikan SDK perlindungan aplikasi untuk Android

Last Updated:Aug 25, 2026

Untuk mengaktifkan perlindungan aplikasi pada aplikasi Android Anda, integrasikan Anti-Bot SDK (selanjutnya disebut SDK dalam topik ini) sebelum mengaktifkan fitur tersebut.

Batasan

Diperlukan Android API level 16 atau lebih tinggi. Jika aplikasi Anda menargetkan API level yang lebih rendah, SDK tidak akan berfungsi sebagaimana mestinya.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Perlindungan aplikasi yang telah dibeli dan diaktifkan. Lihat Prosedur mengaktifkan perlindungan aplikasi.

  • Paket SDK (file AAR) untuk Android. Hubungi dukungan teknis di grup layanan DingTalk atau kirimkan ticket untuk memintanya. Nama file tersebut adalah AliTigerTally_X.Y.Z.aar, dengan X.Y.Z sebagai nomor versi.

  • Kunci aplikasi (kunci otentikasi SDK). Untuk mendapatkannya, login ke Konsol WAF, pilih Protection Config > Website Protection, buka tab Bot Management, aktifkan App Protection, lalu klik Obtain and Copy Appkey.

Setiap Akun Alibaba Cloud memiliki satu kunci aplikasi unik yang berlaku untuk semua nama domain dalam instans Web Application Firewall (WAF) Anda, serta untuk aplikasi Android dan iOS. Contoh kunci aplikasi:
****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

Cara kerja

SDK memberikan tanda tangan pada setiap permintaan keluar dari aplikasi Anda. WAF memverifikasi tanda tangan tersebut di sisi server untuk mendeteksi dan memblokir traffic berbahaya, lalu meneruskan permintaan yang sah ke server origin Anda.

(Opsional) Buat proyek Android uji coba

Jika Anda ingin berlatih langkah-langkah integrasi sebelum menerapkannya pada aplikasi produksi, buat terlebih dahulu proyek uji coba di Android Studio.

Gambar berikut menunjukkan contoh proyek uji coba bernama TigerTally_sdk_test.

Jalankan proyek uji coba tersebut untuk memverifikasi bahwa proyek berfungsi sebelum melanjutkan.

Integrasikan SDK

Langkah 1: Buka proyek di Android Studio

Buka proyek Anda di Android Studio dan navigasikan ke direktori file proyek.

Langkah 2: Tambahkan dependensi AAR

  1. Salin AliTigerTally.aar ke direktori libs proyek Anda. Anda juga dapat menyeret file tersebut langsung ke direktori tersebut.

  2. Buka build.gradle dan tambahkan konfigurasi berikut:

    • Deklarasikan libs sebagai repositori lokal:

      repositories {
          flatDir {
              dirs 'libs'
          }
      }
    • Tambahkan dependensi compile:

      dependencies {
          compile(name: 'AliTigerTally_X.Y.Z', ext: 'aar')
      }
      Penting: Ganti X.Y.Z dengan nomor versi aktual dari nama file AAR yang Anda unduh.
  3. Klik Sync Now untuk menerapkan perubahan.

  4. Jika Anda menggunakan ProGuard untuk mengacak kode aplikasi, tambahkan aturan berikut ke file konfigurasi ProGuard segera setelah menambahkan dependensi. Hal ini mencegah kelas SDK dihapus saat proses build, yang dapat menyebabkan kegagalan waktu proses.

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

Langkah 3: Konfigurasikan filter library native (jika diperlukan)

Lewati langkah ini jika proyek Anda sudah mencakup file SO. Jika tidak, tambahkan blok ndk berikut ke build.gradle:

android {
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'x86', 'armeabi-v7a'
            //abiFilters "armeabi-v7a"
        }
    }
}

Langkah 4: Ajukan izin

Tambahkan izin berikut ke AndroidManifest.xml. Hanya INTERNET yang wajib agar SDK dapat berfungsi.

Izin Wajib Permintaan runtime (Android 6.0+) Deskripsi
android.permission.INTERNET Ya Tidak — diberikan otomatis saat instalasi Mengizinkan SDK mengirim permintaan bertanda tangan ke WAF.
android.permission.ACCESS_NETWORK_STATE Tidak Tidak — diberikan otomatis saat instalasi Membaca status jaringan perangkat untuk sinyal risiko yang lebih baik.
android.permission.ACCESS_WIFI_STATE Tidak Tidak — diberikan otomatis saat instalasi Membaca status koneksi Wi-Fi untuk sinyal risiko yang lebih baik.
android.permission.READ_PHONE_STATE Tidak Ya — harus diminta saat runtime Membaca identitas perangkat untuk sinyal risiko yang lebih baik.
android.permission.BLUETOOTH Tidak Tidak — diberikan otomatis saat instalasi Membaca informasi perangkat Bluetooth untuk sinyal risiko yang lebih baik.
android.permission.READ_EXTERNAL_STORAGE Tidak Ya — harus diminta saat runtime Membaca penyimpanan eksternal untuk sinyal risiko yang lebih baik.
android.permission.CHANGE_NETWORK_STATE Tidak Tidak — diberikan otomatis saat instalasi Memodifikasi status konektivitas jaringan untuk sinyal risiko yang lebih baik.

Langkah 5: Tambahkan kode integrasi

5a. (Opsional) Tetapkan ID pengguna

Panggil setAccount() untuk mengaitkan ID pengguna dengan permintaan SDK. Hal ini membantu WAF menerapkan kebijakan perlindungan tingkat pengguna. Lewati pemanggilan ini jika pengguna belum login — panggil init() secara langsung.

// Signature: int setAccount(String account)
// Returns: 0 on success, -1 on failure

final String account = "account"; // Gunakan ID pengguna yang telah dimasking
TigerTallyAPI.setAccount(account);
Parameter Tipe Deskripsi
account String ID pengguna. Gunakan nilai yang telah dimasking untuk melindungi privasi pengguna.

5b. Inisialisasi SDK

Panggil init() sekali saat aplikasi Anda dimulai. Ini melakukan pengumpulan informasi perangkat satu kali yang digunakan untuk analisis risiko.

Tersedia dua mode pengumpulan:

  • `DEFAULT`: Mengumpulkan semua data perangkat, termasuk bidang sensitif (imei, imsi, simSerial, wifiMac, wifiList, bluetoothMac). Memerlukan izin yang sesuai. Gunakan mode ini setelah pengguna menerima kebijakan privasi aplikasi.

  • `NOT_GRANTED`: Melewati bidang sensitif. Gunakan mode ini sebelum pengguna menerima kebijakan privasi.

// Signature: int init(Context context, String appkey, int type)
// Returns: 0 on success, -1 on failure

final String appkey = "your_appkey";

// Pengumpulan data lengkap (setelah pengguna menerima kebijakan privasi)
int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.DEFAULT);

// Kecualikan bidang sensitif (sebelum pengguna menerima kebijakan privasi)
int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.NOT_GRANTED);

Log.d("AliSDK", "ret:" + ret);
Parameter Tipe Deskripsi
context Context Konteks aplikasi.
appkey String Kunci aplikasi yang diperoleh dari Konsol WAF.
type CollectType Mode pengumpulan data: DEFAULT atau NOT_GRANTED.

5c. Beri tanda tangan pada permintaan

Panggil vmpSign() sebelum setiap permintaan HTTP keluar. Teruskan badan permintaan sebagai array byte; untuk permintaan GET atau badan POST kosong, teruskan null atau "".getBytes("UTF-8").

// Signature: String vmpSign(int signType, byte[] input)
// Returns: the wToken signature string

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);
Parameter Tipe Deskripsi
signType int Algoritma tanda tangan. Atur ke 1 untuk menggunakan algoritma default.
input byte[] Badan permintaan yang akan ditandatangani. Teruskan null atau array byte kosong untuk permintaan GET atau POST kosong.

5d. Tambahkan tanda tangan ke Header HTTP

Atur nilai wToken sebagai properti Header HTTP sebelum mengirim permintaan. Contoh berikut menggunakan HttpURLConnection:

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");
            // Tambahkan tanda tangan wToken ke header permintaan
            conn.setRequestProperty("wToken", wToken);
            OutputStream os = conn.getOutputStream();
            // Tulis 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();

Apa yang terjadi setelah integrasi

Setelah diintegrasikan, untuk setiap permintaan outbound yang dikirim aplikasi Anda:

  1. vmpSign() menghasilkan tanda tangan wToken dari badan permintaan.

  2. Kode Anda melampirkan wToken sebagai Header HTTP.

  3. WAF memeriksa header wToken, memblokir permintaan yang gagal verifikasi tanda tangan, dan meneruskan permintaan valid ke server origin Anda.

Langkah selanjutnya