Tenemos una aplicación web que no tiene estado. Estamos utilizando http autenticación a través de SSL/TLS. Los navegadores del usuario son que presumiblemente almacenan credenciales de autenticación (posiblemente incluso después de que el navegador se apaga si configuran sus navegadores de esa manera). Validamos en cada acceso.¿Puede mi aplicación web implementar el inicio de sesión de usuario y permanecer sin estado?
Por razones que principalmente tienen que ver con la usabilidad, nos gustaría para dejar de usar la autenticación http. ¿Existe una forma razonable de para implementar el inicio de sesión de usuario y
- Permanecer sin estado.
- No requiere que los usuarios vuelvan a escribir las credenciales en cada acceso.
- Sea al menos tan seguro como la autenticación http sobre SSL/TLS.
Por ejemplo, estamos dispuestos a utilizar cookies, y podríamos almacenar el nombre de usuario y la contraseña como una cookie. Sin embargo, esto parece menos seguro . ¿Pero es? Si utilizamos una cookie no persistente, ¿es menos seguro que cualquier otro método que utilice un navegador para almacenar las credenciales durante la sesión o más?
Podríamos almacenar el nombre de usuario y un hash de la contraseña como se sugiere aquí: What should I store in cookies to implement "Remember me" during user login ¿pero es eso mejor?
Podríamos almacenar un token aleatorio como una cookie, pero luego tenemos que mantener una tabla de búsqueda (sesión) en el servidor y convertirnos en con estado.
Podríamos almacenar una versión encriptada de las credenciales como una cookie y luego descifrar y validar en cada acceso. Este parece como que es un poco más seguro que la autenticación http y tampoco requiere estado. Sin embargo, estoy no estoy seguro de que desee la sobrecarga adicional de descifrado. ¿Y es realmente más seguro? Si alguien obtiene una copia de la cadena encriptada (o hash, como arriba), ¿no les da el mismo acceso como si tuvieran la contraseña?
lo agradecería sus pensamientos, pero vamos a empezar con la suposición de que autenticación HTTP sobre SSL/TLS es seguro suficiente para nuestros propósitos y queremos permanecer sin estado.
EDITAR
Después de algunas investigaciones más, creo que esta pregunta StackOverflow: Client side sessions plantea el problema mucho mejor, y las respuestas son relativamente mejor así. Gracias a todos por su aporte.
¿Qué software está utilizando como servidor y base de datos, así como con qué idioma está generando las páginas? – sigint
@sigint, la aplicación está escrita en PHP en Apache. No hay base de datos. ¿Por qué? ? – bmb
Si otros usuarios (SO) saben qué herramientas tiene su disposa Intentarán proporcionarle una solución que utilice esas herramientas. – sigint