Todos los productos
Search
Centro de documentos

Web Application Firewall:Integrar el SDK de protección de aplicaciones para Android

Última actualización: Sep 23, 2026

Para habilitar la protección de aplicaciones en sus apps de Android, integre el Anti-Bot SDK (al que se hace referencia como SDK en este tema) antes de activar la función.

Limitaciones

Se requiere el nivel de API de Android 16 o posterior. Si su aplicación está diseñada para un nivel de API anterior, el SDK no funcionará correctamente.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • La función App protection comprada y habilitada. Consulte Procedure to enable app protection.

  • El paquete del SDK (archivo AAR) para Android. Póngase en contacto con el soporte técnico en el grupo de servicio de DingTalk o envíe un ticket para solicitarlo. El archivo se llama AliTigerTally_X.Y.Z.aar, donde X.Y.Z es el número de versión.

  • La app key (clave de autenticación del SDK). Para obtenerla, inicie sesión en la consola de WAF, elija Protection Config > Website Protection, vaya a la pestaña Bot Management, active App Protection y haga clic en Obtain and Copy Appkey.

Cada cuenta de Alibaba Cloud tiene una app key única que funciona para todos los nombres de dominio de su instancia de Web Application Firewall (WAF), tanto en aplicaciones de Android como de iOS. Ejemplo de app key:
****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

Cómo funciona

El SDK firma cada solicitud saliente de su aplicación. WAF verifica estas firmas en el servidor para detectar y bloquear tráfico malicioso. Después, reenvía las solicitudes legítimas a su servidor de origen.

(Opcional) Crear un proyecto de prueba de Android

Si desea practicar los pasos de integración antes de aplicarlos a su aplicación de producción, cree primero un proyecto de prueba en Android Studio.

A continuación se muestra un proyecto de prueba de ejemplo llamado TigerTally_sdk_test.

Ejecute el proyecto de prueba para comprobar que funciona antes de continuar.

Integrar el SDK

Paso 1: Abrir el proyecto en Android Studio

Abra su proyecto en Android Studio y vaya al directorio de archivos del proyecto.

Paso 2: Agregar la dependencia AAR

  1. Copie AliTigerTally.aar en el directorio libs de su proyecto. También puede arrastrar el archivo directamente al directorio.

  2. Abra build.gradle y agregue las siguientes configuraciones:

    • Declare libs como un repositorio local:

      repositories {
          flatDir {
              dirs 'libs'
          }
      }
    • Agregue una dependencia de compilación:

      dependencies {
          compile(name: 'AliTigerTally_X.Y.Z', ext: 'aar')
      }
      Importante: Reemplace X.Y.Z por el número de versión real del nombre del archivo AAR que descargó.
  3. Haga clic en Sync Now para aplicar los cambios.

  4. Si utiliza ProGuard para ofuscar su aplicación, agregue la siguiente regla a su archivo de configuración de ProGuard inmediatamente después de agregar la dependencia. Esto evita que se eliminen las clases del SDK durante la compilación, lo cual provocaría errores en tiempo de ejecución.

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

Paso 3: Configurar filtros de bibliotecas nativas (si es necesario)

Omita este paso si su proyecto ya incluye un archivo SO. De lo contrario, agregue el siguiente bloque ndk a build.gradle:

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

Paso 4: Solicitar permisos

Agregue los siguientes permisos a su archivo AndroidManifest.xml. Solo INTERNET es obligatorio para que el SDK funcione.

Permiso

Obligatorio

Solicitud en tiempo de ejecución (Android 6.0+)

Descripción

android.permission.INTERNET

Sí

No: se otorga automáticamente durante la instalación

Permite que el SDK envíe solicitudes firmadas a WAF.

android.permission.ACCESS_NETWORK_STATE

No

No: se otorga automáticamente durante la instalación

Lee el estado de red del dispositivo para mejorar las señales de riesgo.

android.permission.ACCESS_WIFI_STATE

No

No: se otorga automáticamente durante la instalación

Lee el estado de la conexión Wi-Fi para mejorar las señales de riesgo.

android.permission.READ_PHONE_STATE

No

Sí: debe solicitarse en tiempo de ejecución

Lee la identidad del dispositivo para mejorar las señales de riesgo.

android.permission.BLUETOOTH

No

No: se otorga automáticamente durante la instalación

Lee la información del dispositivo Bluetooth para mejorar las señales de riesgo.

android.permission.READ_EXTERNAL_STORAGE

No

Sí: debe solicitarse en tiempo de ejecución

Lee el almacenamiento externo para mejorar las señales de riesgo.

android.permission.CHANGE_NETWORK_STATE

No

No: se otorga automáticamente durante la instalación

Modifica el estado de conectividad de red para mejorar las señales de riesgo.

Paso 5: Agregar el código de integración

5a. (Opcional) Establecer el identificador de usuario

Llame a setAccount() para asociar un identificador de usuario con las solicitudes del SDK. Esto ayuda a que WAF aplique políticas de protección a nivel de usuario. Omita esta llamada si el usuario no ha iniciado sesión y llame directamente a init().

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

final String account = "account"; // Use a masked user ID
TigerTallyAPI.setAccount(account);

Parámetro

Tipo

Descripción

account

String

El identificador de usuario. Utilice un valor enmascarado para proteger la privacidad del usuario.

5b. Inicializar el SDK

Llame a init() una sola vez cuando inicie su aplicación. Esta acción recopila por única vez la información del dispositivo que se usa para el análisis de riesgos.

Hay dos modos de recopilación disponibles:

  • DEFAULT: recopila todos los datos del dispositivo, incluidos los campos sensibles (imei, imsi, simSerial, wifiMac, wifiList, bluetoothMac). Requiere los permisos correspondientes. Utilice este modo después de que el usuario acepte la política de privacidad de la aplicación.

  • NOT_GRANTED: omite los campos sensibles. Utilice este modo antes de que el usuario acepte la política de privacidad.

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

final String appkey = "your_appkey";

// Full data collection (after user accepts privacy policy)
int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.DEFAULT);

// Exclude sensitive fields (before user accepts privacy policy)
int ret = TigerTallyAPI.init(this.getApplicationContext(), appkey, TigerTallyAPI.CollectType.NOT_GRANTED);

Log.d("AliSDK", "ret:" + ret);

Parámetro

Tipo

Descripción

context

Context

El contexto de la aplicación.

appkey

String

La app key obtenida desde la consola de WAF.

type

CollectType

Modo de recopilación de datos: DEFAULT o NOT_GRANTED.

5c. Firmar la solicitud

Llame a vmpSign() antes de cada solicitud HTTP saliente. Pase el cuerpo de la solicitud como un arreglo de bytes. Para solicitudes GET o cuerpos POST vacíos, pase null o "".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);

Parámetro

Tipo

Descripción

signType

int

Algoritmo de firma. Establézcalo en 1 para usar el algoritmo predeterminado.

input

byte[]

El cuerpo de la solicitud que se va a firmar. Pase null o un arreglo de bytes vacío para solicitudes GET o POST vacías.

5d. Agregar la firma al encabezado HTTP

Establezca el valor de wToken como una propiedad del encabezado HTTP antes de enviar la solicitud. En el siguiente ejemplo se utiliza 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");
            // Add the wToken signature to the request header
            conn.setRequestProperty("wToken", wToken);
            OutputStream os = conn.getOutputStream();
            // Write the request body
            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();

Qué sucede después de la integración

Una vez completada la integración, el proceso para cada solicitud saliente que envíe su aplicación es el siguiente:

  1. vmpSign() genera una firma wToken a partir del cuerpo de la solicitud.

  2. Su código adjunta wToken como un encabezado HTTP.

  3. WAF inspecciona el encabezado wToken, bloquea las solicitudes que no superan la verificación de firma y reenvía las válidas a su servidor de origen.

Pasos siguientes