Asistencia Geo — Documentación

03 — Anti-spoofing y prevención de fraude

Defensa en profundidad: local (móvil) + remota (servidor). Ninguna capa sola basta.

1. Detección de Mock Location (Fake GPS)

Android (nativo vía MethodChannel → Kotlin)

Implementación: mobile/android/.../MainActivity.kt — isMockLocationDetected().

iOS

Librerías Flutter (referencia)

2. Detección de Root (Android) y Jailbreak (iOS)

3. Validación de hora (NTP / autoridad del servidor)

4. Plausibilidad en servidor

5. Flujo de bloqueo

Si se detecta mock/root/jailbreak:

  1. El check-in no crea attendance_events.
  2. Se inserta un registro en alerts (type = mock_location / root_jailbreak) con payload (coordenadas, app sospechosa, versión de OS).
  3. El backend responde 403 Forbidden con código de error específico.
  4. El panel web notifica al administrador (push/email).

6. Límites y mitigación