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

266
Views
¿Cómo puedo detectar cuando un usuario ha cerrado una pestaña?

El sitio web para el que estoy desarrollando utiliza una mezcla de .NET (aspx), Javascript y jQuery. Buscando una vulnerabilidad que es el resultado del siguiente escenario:

  1. El usuario A inicia sesión en www.example.com.au mientras tiene varias pestañas abiertas.
  2. El usuario A cierra la pestaña que ha iniciado sesión en el sitio web anterior, pero no el navegador.
  3. El usuario A luego sale de la computadora.
  4. El usuario B se sienta en la misma computadora/misma sesión del navegador y va a www.example.com.au , lo que le otorga al usuario B acceso total a la cuenta del usuario A.

Si bien hay un tiempo de espera del lado del servidor para la sesión del usuario después de 10 minutos de inactividad, sigue siendo una ventana en la que se puede explotar esta vulnerabilidad, aunque sea de nicho. Mi primera puñalada en esto consistió en:

  1. JavaScript que utiliza el evento onbeforeunload para establecer un indicador de almacenamiento local en verdadero. La creación de esta bandera se realiza en la pantalla de inicio de sesión (aplicación separada).
  2. Luego, otro JavaScript verifica si el indicador es verdadero después de cargar cada página dentro de este sitio web y, de ser así, cierra la sesión. He tenido que incluir varios elementos en la lista blanca para garantizar que esto no se active en cada descarga de página.

FRAGMENTO DE CÓDIGO: ( código aquí )

En su mayor parte, tuve éxito, pero tuve descargas muy inconsistentes (activando el cierre de sesión) al interactuar con elementos de intervalo/opción que cargan otra pantalla. Sabía de la incomodidad de onbeforeunload de navegador a navegador/versión a versión, pero en ese momento era la única idea que (en su mayoría) funcionaba, así que mi pregunta es:

¿Hay una mejor manera de resolver este tipo de vulnerabilidad dentro de la pila que se está utilizando? Cualquier sugerencia conceptual o incluso ejemplos de fragmentos de código sería increíble. Soy un desarrollador bastante nuevo y quiero aprender.

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

0

puedes manejar esto con este evento:

 window.onunload = function(){ console.log('tab closed') }
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!