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, denganX.Y.Zsebagai 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.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. 
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
Salin
AliTigerTally.aarke direktorilibsproyek Anda. Anda juga dapat menyeret file tersebut langsung ke direktori tersebut.
Buka
build.gradledan tambahkan konfigurasi berikut:Deklarasikan
libssebagai repositori lokal:repositories { flatDir { dirs 'libs' } }Tambahkan dependensi compile:
dependencies { compile(name: 'AliTigerTally_X.Y.Z', ext: 'aar') }Penting: Ganti
X.Y.Zdengan nomor versi aktual dari nama file AAR yang Anda unduh.
Klik Sync Now untuk menerapkan perubahan.
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.
| Izin | Wajib | Permintaan runtime (Android 6.0+) | Deskripsi |
|---|---|---|---|
android.permission.INTERNET | Ya | Tidak — diberikan otomatis saat instalasi | Memungkinkan 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 | Mengubah 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);| 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 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);| 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. 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);| Parameter | Tipe | Deskripsi |
|---|---|---|
signType | int | Algoritma tanda tangan. Atur ke 1 untuk menggunakan algoritma default. |
input | byte[] | 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:
vmpSign()menghasilkan tanda tanganwTokendari badan permintaan.Kode Anda melampirkan
wTokensebagai header HTTP.WAF memeriksa header
wToken, memblokir permintaan yang gagal verifikasi tanda tangan, dan meneruskan permintaan yang valid ke server origin Anda.
Contoh kunci aplikasi: