Vectores de ataque potenciales usando Javascript para iniciar sesión [cerrado]

2

Me gustaría permitir que los usuarios de un sitio web puedan iniciar sesión en cualquier página.

Para proporcionar una experiencia sin interrupciones, lo primero que pensé fue recopilar las credenciales de usuario (nombre de usuario y contraseña) en forma dinámica y luego autenticar al usuario a través de una llamada a la API (https) realizada con Javascript.

Sin embargo, no confío en la seguridad de este enfoque.

¿Es este un escenario seguro? ¿Cuáles son los posibles ataques vectoriales? ¿Cuáles son las mejores alternativas?

[editar para proporcionar más detalles]

De la respuesta de @ Xander, obtengo que llamar a una API desde javascript no es inseguro per se. Sin embargo, me gustaría saber cómo configurar una cookie de inicio de sesión de forma segura después de una llamada exitosa a la API

Gracias

    
pregunta securityCurious 08.04.2015 - 22:55
fuente

1 respuesta

2

Por lo tanto, el escenario básico que propones es enviar las credenciales desde un navegador a tu servidor web. Por lo tanto, estamos tratando con HTML y Javascript y los activos asociados en el navegador, y la comunicación se realiza a través de HTTP / HTTPS. Estos son los únicos componentes relevantes para la función específica en cuestión.

Y, de hecho, el hecho de que esté utilizando JavaScript para enviar las credenciales a un punto final de la API en lugar de utilizar un formulario HTML para enviarlas a una página es en sí materialmente irrelevante.

Los dos únicos puntos que nos preocupan especialmente aquí son:

  1. ¿El contenido (HTML, JavaScript, activos) que se entrega al navegador es genuino? En otras palabras, ¿obtendrá el usuario el código HTML y JavaScript que pretendíamos enviar, que de hecho enviará las credenciales a nuestro servidor web y no a un servidor web de atacantes?
  2. ¿Son seguras y seguras las credenciales que el usuario envía a nuestra API?

La forma de responder "Sí" a estas dos preguntas es HTTPS. Esto significa que no solo debe usar HTTPS para enviar las credenciales a la API, sino que también debe usarlo para entregar la página de inicio de sesión, el JavaScript para la página de inicio de sesión y cualquier otro activo en la página de inicio de sesión al usuario, para que no puede ser modificado por un atacante activo.

Entonces, para esta función de alcance muy limitado, si usa HTTPS y HTTPS solo para asegurar la transmisión de todos los datos en ambas direcciones, será seguro.

    
respondido por el Xander 08.04.2015 - 23:36
fuente

Lea otras preguntas en las etiquetas