credenciales de sesión en el cliente

0

Estoy desarrollando una aplicación basada en IE11 que se ejecuta en un servidor web dentro de nuestra red corporativa

La aplicación realiza llamadas a una API de terceros que requiere certificados de cliente y nombre de usuario / contraseña en la url. La url utiliza SSL. En la aplicación estoy usando ajax para enviar url. Todo esto parece funcionar. Me piden un certificado y parece que la verificación de credenciales funciona.

Mi preocupación es crear un formulario de inicio de sesión y conservar las credenciales del usuario si el inicio de sesión es satisfactorio. La única forma en que puedo probar las credenciales es ejecutar una consulta y ver si la cadena de resultados devuelta está marcada como exitosa. Por lo que puedo decir, no hay ningún mecanismo en la API para devolver un token de sesión. Creo que tengo que mantener el nombre de usuario y la contraseña en la sesión del cliente si quiero hacer futuras llamadas url en la sesión. Estaba pensando en usar objetos de SessionStorage pero parece que esto podría ser una mala idea.

No soy un experto en seguridad y agradecería cualquier orientación sobre si el uso de sessionStorage es un enfoque razonable. ¿Existe una forma más segura de hacerlo considerando las limitaciones de la API de terceros?

    
pregunta gtmclean 20.07.2016 - 23:51
fuente

2 respuestas

0

Como Tom ha señalado, el único riesgo obvio es que las credenciales se conservan en el cliente cuando utiliza el almacenamiento local.

Tu descripción de la aplicación me ha confundido un poco. Supongo que quiere decir que esto realmente se ejecuta en el navegador, se sirve desde un servidor web local, pero llama a un servicio ajax en un sistema remoto. Si es así, ¿por qué no almacenar las credenciales en la sesión con el servidor local?

Alternativamente, en lugar de almacenamiento local, usar una cookie de sesión (asociada con su servidor local) para almacenar las credenciales significaría que los datos serían más difíciles de leer después de que el usuario cerró el navegador, pero aún persistiría en el almacenamiento para algun tiempo.

Si esta no es una aplicación de una sola página (donde podría simplemente mantener los datos en una variable de javascript, entonces las únicas opciones que se me ocurren para el almacenamiento efímero que sobrevivirían a las transiciones de la página son

  • el window.name
  • ejecutando la aplicación en un marco mientras retiene los datos en javascript en un marco que no se actualiza en la misma ventana

Tenga en cuenta que estos no necesariamente tienen que contener el texto sin formato de las credenciales, pero pueden almacenar una clave generada aleatoriamente utilizada para cifrar / descifrar las redenciales almacenadas en algún lugar menos seguro.

    
respondido por el symcbean 21.07.2016 - 13:23
fuente
0

Al final del día, si la computadora es propiedad de un solo usuario Y está dentro de una red segura, no debería ser demasiado terrible almacenándola como texto simple. Por supuesto, pueden surgir problemas si el usuario deja su computadora desatendida, pero como la API que está utilizando no devuelve las claves de sesión (lo que es realmente extraño ...) no hay una solución realmente mejor.

La seguridad adicional que podría implementar es la protección de XSS para que el malware no robe las credenciales y se asegure de que el almacenamiento de la sesión se elimine correctamente después de un período de tiempo establecido.

    
respondido por el Tom 21.07.2016 - 10:15
fuente

Lea otras preguntas en las etiquetas