All Products
Search
Document Center

Web Application Firewall:Integrasikan SDK Perlindungan Aplikasi untuk Android

Last Updated:Apr 01, 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 untuk mengaktifkan perlindungan aplikasi.

  • Paket SDK (file AAR) untuk Android. Hubungi dukungan teknis di grup layanan DingTalk atau ajukan tiket 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, masuk ke Konsol WAF, pilih Protection Configurations > 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. App防护 Contoh kunci aplikasi:
****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

Cara kerja

SDK memberi 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. 测试Demo

Jalankan proyek uji coba tersebut untuk memastikan berfungsi dengan baik 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. 复制到libs目录

  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-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 menyertakan 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 Anda. Hanya izin INTERNET yang wajib agar SDK dapat berfungsi.

IzinWajibPermintaan runtime (Android 6.0+)Deskripsi
android.permission.INTERNETYaTidak — diberikan otomatis saat instalasiMemungkinkan SDK mengirim permintaan bertanda tangan ke WAF.
android.permission.ACCESS_NETWORK_STATETidakTidak — diberikan otomatis saat instalasiMembaca status jaringan perangkat untuk sinyal risiko yang lebih baik.
android.permission.ACCESS_WIFI_STATETidakTidak — diberikan otomatis saat instalasiMembaca status koneksi Wi-Fi untuk sinyal risiko yang lebih baik.
android.permission.READ_PHONE_STATETidakYa — harus diminta saat runtimeMembaca identitas perangkat untuk sinyal risiko yang lebih baik.
android.permission.BLUETOOTHTidakTidak — diberikan otomatis saat instalasiMembaca informasi perangkat Bluetooth untuk sinyal risiko yang lebih baik.
android.permission.READ_EXTERNAL_STORAGETidakYa — harus diminta saat runtimeMembaca penyimpanan eksternal untuk sinyal risiko yang lebih baik.
android.permission.CHANGE_NETWORK_STATETidakTidak — diberikan otomatis saat instalasiMengubah 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 berbasis 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);
ParameterTipeDeskripsi
accountStringID 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 data:

  • `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);
ParameterTipeDeskripsi
contextContextKonteks aplikasi.
appkeyStringKunci aplikasi yang diperoleh dari Konsol WAF.
typeCollectTypeMode pengumpulan data: DEFAULT atau NOT_GRANTED.

5c. Beri tanda tangan pada permintaan

Panggil vmpSign() sebelum setiap permintaan HTTP keluar. Kirim badan permintaan sebagai array byte; untuk permintaan GET atau badan POST kosong, kirim 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);
ParameterTipeDeskripsi
signTypeintAlgoritma tanda tangan. Atur ke 1 untuk menggunakan algoritma default.
inputbyte[]Badan permintaan yang akan ditandatangani. Kirim 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 keluar yang dikirim oleh 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 yang valid ke server origin Anda.

Langkah selanjutnya