Ingeniero "Latch" en Eleven Paths
Desde que se lanzó Latch hace ya un año, incontables han sido los comentarios de gente que se han preguntado si es posible utilizar Latch con los servicios de Internet más utilizados como Facebook, Gmail, Twitter, o para cuándo estaría Latch disponible en estos servicios. Es difícil de decir, cuando esas compañías integra cada una de ellas sus propias soluciones - y algunas de ellas no están disponibles ni tan siquiera en todos los países - como el OTP de Twitter en España y Latinoamérica. A nosotros nos encantaría que lo hicieran, pero mientras tanto, como también nos gusta jugar con la tecnología y aportar soluciones, yo me he hecho un hack para que si en algún momento alguien quiere ser avisado vía Latch en el momento en que alguien acceda a tu Facebook.
Figura 1: Un "hack" con Latch para controlar accessos a Facebook |
Como sabéis Latch es sumamente fácil de integrar gracias a sus plugins y SDKs, por eso su variedad de usos y utilidades llegan tan lejos como las ideas de aquellos que decidan integrarlo. En este sentido ya hemos visto integraciones muy interesantes, desde para controlar cerrojos físicos a securizar un lector de DNIe en el acceso a un recinto, pasando por integrar los routers OpenWRT, el uso de conexiones bluetooth, un servidor FTP, archivos con dos llaves, los propios sistemas OS X, el hot-plug de dispositivos USB o el login en Active Directory. Por eso decidimos premiar los mejores plugins en el concurso que termina esta semana.
Sesiones Activas en Facebook
Hoy vamos a ver cómo podemos añadir una protección extra en nuestra cuenta de Facebook sin necesidad de que este servicio haya realizado la integración con Latch, haciendo un hack para los amigos de hacer cosas curiosas con la tecnología. Para ello, vamos a hacer uso de la función “Dónde has iniciado sesión” que incorpora Facebook en su área de seguridad, dentro del perfil del usuario. En esta sección podemos ver información de que sesiones tenemos abiertas en cada momento, y desde qué dispositivos y plataformas se han abierto; pero sobre todo y lo más importante, incorpora unos enlaces que nos permite cerrar bien todas las sesiones abiertas o bien aquellas concretas que deseemos.
Figura 2: Sesiones abiertas en Facebook |
Esto es lo que vamos a utilizar como comprobación y reacción a Latch. Es fácil caer en la cuenta que lo único que tenemos que hacer es monitorizar esta página y en el momento en que se detecte una nueva sesión, realizar una consulta a Latch para determinar si la mantenemos abierta o la invalidamos.
Paso 1: Creación de aplicación Latch para Facebook y el pareado
Por supuesto, lo primero que tenemos que hacer es crear nuestra aplicación en el área de desarrolladores de Latch para obtener tanto un Application Id como un Secreto, la configuraremos con OTP deshabilitado porque no vamos a hacer desafío respuesta con un código.
Figura 3: Creando la aplicación Latch en el Area de desarrolladores de Latch |
Con la aplicación creada y, o bien mediante una llamada cURL o bien mediante cualquiera de los SDKs de Latch, realizaremos un pequeño script de pareado donde emparejaremos nuestra cuenta de Latch con esta nueva aplicación. Sirva de ejemplo el siguiente código PHP.
Figura 4: Código de PHP para obtener un pareado con un usuario de Latch |
Tras ejecutar el script, obtendremos el AccountId de este usuario. Éste será el AccountId que debemos guardar ya que será sobre el que se deberán realizar las consultas de estado a los servidores de Latch posteriormente. 
Paso 2: Obteniendo las sesiones abiertas en Facebook
Configurada la cuenta de Latch, lo que tenemos que hacer es un servicio que constantemente consulte la siguiente URL, parsear su contenido y extraer en nuestro programa la información de las sesiones abiertas en Facebook:
Para realizar esta tarea tenemos múltiples posibilidades, desde scripts que hagan llamadas curl a herramientas de automatización como por ejemplo el Webdriver de Selenium; lógicamente esta última opción ofrece peor performance puesto que estamos innecesariamente renderizando el contenido, pero ilustra mejor esta prueba de concepto. Hay que tener en cuenta que haciendo esto, estamos abriendo una nueva sesión que no deberemos cerrar, para mantener activo el servicio. En cada iteración y carga de dicha URL nuestro servicio deberá:
1. Comprobar las sesiones activas
2. Si aparece una sesión que no tuviéramos almacenada, realizar una llamada de status a la API de Latch.
3. Si la llamada devuelve status “off”, terminar la nueva sesión, en caso contrario almacenarla como sesión abierta.
4. Comprobar si alguna de nuestras sesiones abiertas ya no existe, para eliminarla.
5. Repetir el proceso volviendo a cargar el contenido.
Como se ve a continuación podemos realizar en pocas lineas esta tarea con Selenium utilizando el WebDriver de Mozilla Firefox. El propio programa se encargara de lanzar el navegador, únicamente necesitamos tener instalado Firefox en nuestro equipo. El código completo de esta prueba de concepto puede consultarse aquí Hack de Latch para Facebook:
Figura 5: Automatización de Selnium para consultar Latch y bloquear sesiones Facebook |
El usuario será expulsado a los pocos segundos automáticamente o si intenta realizar cualquier acción como por ejemplo leer los mensajes se le redirigirá a la pantalla de login. En el siguiente vídeo podéis ver el funcionamiento de la monitorización con Selenium (parte izquierda) y de un intento de acceso teniendo Latch bloqueado (parte derecha).
Otros hacks posibles con Latch de forma similar
Adicionalmente podríamos utilizar todo el potencial de Latch, añadiendo operaciones para distintos tipos de sesiones dependiendo de dispositivos móviles, equipo de conexión, horas, ubicaciones o direcciones IP ya que toda esta información está disponible. Este mismo concepto, se puede aplicar también de forma análoga en cuentas de Google / Gmail, donde en la parte inferior de nuestra bandeja de entrada, encontraremos un enlace “Información detallada”.
Figura 7: Actividad de cuenta de Google (Gmail) |
A través de este enlace podemos abrir una ventana con información de las sesiones activas. En este caso, no podemos cerrarlas individualmente, pero sí podremos invalidarlas todas, haciendo clic en el botón. Cómo veis las posibilidades de integración con Latch son múltiples. En una próxima entrada veremos cómo establecer un sistema de alertas en nuestra cuenta de Twitter con Latch, mientras tanto recordar que aún quedan algún tiempo para participar en el Concurso de plugins de Latch, donde se pueden ganar hasta 10.000$ con ideas - tal vez - como esta.
Fuente
No hay comentarios:
Publicar un comentario