device_fingerprinting
El device fingerprinting crea un identificador único del dispositivo usando señales del browser/SO para detectar cuando un mismo dispositivo intenta verificarse múltiples veces con documentos distintos.
When to use
Aplicar al inicio de cada sesión para generar el fingerprint, y consultarlo al detectar comportamiento sospechoso.
Instructions
- En el frontend recoger señales: User-Agent, pantalla (resolución, color depth), timezone, idioma, fuentes instaladas, WebGL renderer, Canvas fingerprint, AudioContext fingerprint.
- Hashear la combinación:
device_id = sha256(signals_json). - Enviar
device_idal backend en cada request (headerX-Device-ID). - En Redis:
INCR device:{device_id}:attempts. Si > N intentos en 24h: flag sospechoso. - Almacenar en Redis:
device_id → [session_ids]con TTL de 7 días. - Detectar cuando el mismo
device_idintenta verificar con >2 documentos distintos en 24h. - Para mayor robustez, combinar con IP fingerprinting.
Notes
- Librería JavaScript recomendada: FingerprintJS (versión open-source: https://github.com/fingerprintjs/fingerprintjs).
- El fingerprint no es 100% estable (cambia con actualizaciones de browser); usar con tolerancia.
- No almacenar el fingerprint más allá del periodo de retención GDPR.