Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

199
Views
Desafío para identificar de forma única una computadora desde cualquiera de sus navegadores

En una aplicación web HTML5, estoy creando una función que se basa en la comunicación de cliente a cliente (con empujador). Está hecho de PHP en el lado del servidor y Javascript con Vue en el lado del cliente.

El escenario típico es: se abre una ventana emergente y desde allí se comunica directamente con otras ventanas abiertas en cualquier otro navegador en la misma computadora. Digamos que tiene 2 navegadores instalados, abre la ventana emergente de la aplicación web con Firefox y se comunica con su página hermana de la aplicación web que abrió anteriormente en Chrome.

La única forma (a medias) que hemos encontrado hasta ahora es usar la dirección IP pública para construir un canal privado nombrado con la dirección IP... Es básico y eficiente.

Sin embargo, si hay más de 1 computadora conectada al mismo enrutador, todas compartirán la misma IP pública, ¡y ahí es donde las cosas se vuelven difíciles!

Una solución podría ser agregar la IP local de la computadora al nombre del canal (que ya se creó con la IP pública), pero a pesar de algunas buenas soluciones que encontré para obtener esta información de una conexión RTC iniciada, esto parece bastante poco confiable y a menudo pasa contra las reglas de privacidad de los navegadores…

Obviamente, no puedo usar información de sesión con PHP en el lado del servidor, ni cookies/almacenamiento local en el lado del cliente, ya que todas esas soluciones están estrechamente relacionadas con el navegador (gracias a Dios, Chrome no compartirá sus cookies con Firefox en tu computadora). Esas soluciones serían perfectas (y sin necesidad de un empujador) si estuviéramos usando 1 solo navegador, pero necesitamos manejar múltiples navegadores en la misma máquina.

Ahí es donde me pregunto si alguien ya se habría enfrentado a este desafío de diseño y compartido algunos consejos, ¡sería increíble! ¡Gracias por leer hasta ahora!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

  • Puede comprobar el agente de usuario del navegador.
  • Puede verificar una combinación de los encabezados de solicitud provenientes de diferentes navegadores.
  • Puede lanzar y detectar explícitamente un error en el navegador del usuario y enviarlo en el encabezado/cuerpo de la solicitud para determinar qué navegador está usando.
  • Puede hacer dibujos de lienzo para ver la información de GPU/CPU del usuario (dado que ya está usando html5, eso es una ventaja).
  • Puede usar webgl directamente para hacer lo mismo con métricas quizás diferentes (ya que canvas usa webgl de todos modos).
  • Puede verificar su velocidad de escritura o incluso crear un perfil de su vocabulario y uso del idioma.
  • Si solicita permisos, puede ver todos sus dispositivos de medios conectados, como auriculares, incluso si solicita permisos de audio, se los mostrará a todos.
  • Puede comparar su CPU con cosas como el tiempo que lleva encontrar números primos o cifrar una clave.
  • Puede usar huellas dactilares de audio, que es casi tan única como su voz, ya que cada navegador y arquitectura de CPU difieren ligeramente en el patrón digital y las oscilaciones creadas a partir del audio, que se pueden capturar.
  • Puede verificar el tamaño de su ventana y el tamaño de la pantalla y la resolución de la pantalla.
  • Probablemente hay incluso más en los que no pensé ahora, también puede usar cualquiera de ellos en combinación para tomar las huellas dactilares de un dispositivo.

Para obtener más información, investigue el rastreo del navegador y la toma de huellas dactilares digitales. Lo que es más, es que puede identificar de manera única al usuario en sus propios navegadores en la misma computadora y también a diferentes usuarios de diferentes dispositivos usando una combinación de rastreo de navegador/huella digital.

En su caso específico, no puede usar todas las técnicas de rastreo del navegador, pero aún puede usar algunas de ellas, como el agente de usuario, ya que aún le dará la información del dispositivo del usuario incluso si está usando un navegador diferente.

La idea con las huellas dactilares digitales es que usted quiere construir una probabilidad lo suficientemente alta como para estar bastante seguro de que es el mismo usuario, nunca puede estar realmente seguro, pero lo suficientemente seguro. Algo así como el tamaño de la pantalla no significa mucho por sí mismo, hay millones de dispositivos que usan, por ejemplo, una pantalla de tamaño 1600, sin embargo, considere el siguiente ejemplo hipotético:

  • El dispositivo del usuario tiene un tamaño de pantalla de 1600, es decir, ~1/8 usuarios.
  • El dispositivo del usuario tardó 20 ms en cifrar una clave 4096, es decir, ~1/8 usuarios.
  • El dispositivo del usuario tardó 40 ms en dibujar una imagen de lienzo, es decir, 1/8 de usuarios.

Ahora ya tiene una probabilidad de 8 * 8 * 8 = 1/512 de saber qué usuario es y ese valor aumenta mucho más rápidamente, basado en 3 cosas fundamentalmente no identificables.

Sin embargo, debe tenerse en cuenta que el uso de cualquier técnica de detección de navegador o huella digital como la anterior está sujeta a las normas de privacidad (al menos en algunos países). Muchas cosas como el agente de usuario están en desuso y si haces cosas como esta en un sitio, tendrás problemas con cosas como GDPR. Creo que puede evitarlo si le solicita explícitamente al usuario su permiso y le informa que, es decir, se está tomando la huella digital de su navegador. Sin embargo, debe tener cuidado porque hacer esto puede causarle problemas si es malicioso, hacer cosas como esta sin el conocimiento del usuario no es ético.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!