REST API security

2

Estoy trabajando en una API REST que permitirá que una aplicación de Android se comunique con un sitio web. Lamentablemente, más de la mitad de las personas que lo van a usar no pueden hacerlo a través de HTTP, por lo que tendré que maximizar la seguridad sobre HTTP.

Lo que debe suceder es simplemente autenticarse a través de una API REST, nombre de usuario / correo electrónico y contraseña.

He pensado en mezclar la contraseña (o el nombre de usuario y la contraseña) en el lado del cliente y enviarla al servidor, pero luego terminarías simplemente con una segunda contraseña con la que cualquiera podría autenticarse. Hashear la contraseña del lado del cliente incluso significaría que si alguien obtiene acceso a la base de datos, esa persona podrá acceder a todas las cuentas.

¿De qué manera se puede autenticar de forma segura a través de HTTP? Tengo control total sobre el cliente y el servidor, por lo que realmente no hay nada que no sea posible.

    
pregunta Ieuan 26.01.2015 - 10:49
fuente

2 respuestas

1

Puedes crear un intercambio Diffie-Helman a través de la API REST.

Primero, el cliente solicita un conjunto de parámetros y el servidor crea g , a y una ID para identificarlos en el caché de servidores. Luego envía g , g^a y ID de vuelta al cliente.

Luego, el cliente puede generar un b y calcular g^(ab) y extraer una clave para cifrar la contraseña. Luego, el cliente envía a g^b la contraseña cifrada y la ID al servidor.

El servidor puede obtener a de su caché basado en la ID y calcular g^(ba) y extraer la clave para descifrar la contraseña. Después de esta operación normal de sal y hash, deben realizarse operaciones para almacenarla en la base de datos y verificarla.

Las identificaciones solo deben ser válidas por un corto tiempo.

Sin embargo, esto es vulnerable a los ataques MitM activos.

Para evitarlo, puede firmar las respuestas del servidor con una clave privada cuya clave pública sea conocida por el cliente.

    
respondido por el ratchet freak 26.01.2015 - 11:01
fuente
1

¿Te fijaste en el mecanismo de autenticación de resumen?

Es mejor que borrar usuario / contraseña a través de HTTP. Aún así, hay algunos problemas de seguridad (como el atacante MitM podría decirle a los clientes que utilicen la autenticación de acceso básica o el modo de autenticación de acceso RFC2069 heredado), pero si tiene el control del cliente, puede superarlo.

enlace

    
respondido por el AaronS 26.01.2015 - 14:52
fuente

Lea otras preguntas en las etiquetas