¿permite al usuario eliminar sesiones individuales en la cuenta, es seguro insertar sesiones en HTML?

1

Actualmente estoy creando una aplicación web que permite al usuario ver todas las sesiones activas conectadas a sus cuentas y, si lo desean, eliminarlas individualmente, como Dropbox

Una forma en que quiero implementar esto es mediante el envío de enlaces que contengan el session_key real e incrustarlos en el HTML como https://www.example.com/session/delete/SESSION_KEY

¿Se consideraría esto como una buena práctica o hay una mejor manera de hacerlo?

    
pregunta AlanSTACK 18.09.2016 - 21:22
fuente

2 respuestas

1
  

¿Se consideraría esto como una buena práctica o hay una mejor manera de hacerlo?

No, esto no parece ser lo ideal.

El mayor problema que veo es que pones un ID de sesión en el HTML de una página. Es una buena práctica hacer cookies de sesión httpOnly para hacer que XSS sea un poco más difícil de explotar. Al poner el ID de sesión en el HTML, filtra esa información en caso de XSS, lo que hace que httpOnly sea inútil.

Esto también puede ser un problema si los datos confidenciales se almacenan en una sesión, ya que alguien que secuestró una sesión o cuenta ahora tiene acceso a todas las sesiones. El impacto parece menor, pero no parece ideal y puede ser un problema según la aplicación.

Además, no tiene ninguna protección CSRF que, aunque es una mala práctica en general, no tiene un impacto de seguridad en este caso, ya que no es una acción muy delicada y un atacante debería conocer el ID de la sesión. , que no lo hacen. Aún así, no parece ideal y también viola RESTful.

Finalmente, nunca es una buena idea colocar datos confidenciales en una URL, sino que debe enviarse mediante POST, ya que de lo contrario podría filtrarse de varias maneras. Una vez más, es probable que esto no sea un problema de seguridad, ya que los datos son inútiles tan pronto como se utilizan, pero no siguen las mejores prácticas (y pueden ser un problema, por ejemplo, cuando la eliminación no funcionó).

Yo sugeriría usar identificadores que sean independientes del identificador de sesión real, y enviarlos a través de POST en su lugar.

    
respondido por el tim 18.09.2016 - 21:48
fuente
1

Si la clave de la sesión es el ID de sesión, entonces no, no sería una buena práctica . El ID de sesión es como el oro. Cuando inicia sesión este ID se almacena como una cookie de sesión. Si alguien obtuviera esta ID, nada les impediría simplemente usar las herramientas de desarrollo del navegador para agregar la ID y se autenticarían como ese usuario sin necesidad de un nombre de usuario o contraseña. El único lugar donde se debe exponer es como una cookie de sesión del navegador, ya que sigue siendo un requisito técnico para las sesiones.

Idealmente, estos ID de sesión deberían tener una clave de referencia única. Y la clave no puede recuperar una sesión, solo puede usarse para coincidir con el ID de sesión en el almacén de sesiones para eliminarla. Esta clave se podría exponer con poco riesgo en comparación con la ID. De esta manera, lo peor es que se elimina la sesión.

    
respondido por el Bacon Brad 18.09.2016 - 22:08
fuente

Lea otras preguntas en las etiquetas