Creo que su enfoque general es fundamentalmente defectuoso. Si bien puedo entender completamente de dónde viene su forma, su enfoque general es erróneo.
Uno de los grandes contribuyentes al bajo nivel de seguridad en muchas aplicaciones se debe a que deja la seguridad en una etapa posterior en lugar de construirla al principio. Con demasiada frecuencia, el enfoque es "permite que la aplicación funcione y nos ocuparemos de la seguridad una vez que tengamos la funcionalidad básica en funcionamiento.
El problema con este enfoque es que hacer que la funcionalidad básica funcione a menudo establecerá restricciones y guiará el diseño de tal manera que sus opciones en materia de seguridad se vuelvan limitadas.
Esto es completamente comprensible. Cuando te sientas a la derecha de la nueva aplicación asesina, quieres centrarte en las partes interesantes: la funcionalidad clave que deseas ver y el progreso real. A menudo, hay gerentes y tomadores de decisiones que aumentan la presión para producir algo que ver. Todo este material de seguridad es solo un andamio que se interpone en el camino, una especie de mal necesario.
Desafortunadamente, con demasiada frecuencia, esto resulta en una falta de énfasis en la seguridad. O bien el diseño hace que agregar la seguridad suficiente sea demasiado difícil u otras presiones, como los plazos de entrega, significa que se cortan las esquinas.
Comience con el modelo de seguridad. Haz que funcione y luego comienza con la funcionalidad de la aplicación. El resultado será un mejor diseño y algo que es más fácil de mantener. En este caso específico
- Sí, definitivamente deshacerse del enfoque de parámetros GET.
- Olvídate de la codificación base64. Realmente no le está comprando nada y es probable que cree una falsa sensación de seguridad.
- Busque formas de minimizar la necesidad de enviar la contraseña o incluso el nombre de usuario. Considere usar algún tipo de token de autenticación.
- Asegúrate de que tus tokens estén encriptados.
Hay muchas ventajas al usar un token de autenticación en lugar de solo un nombre de usuario y contraseña. Puede cifrar información adicional en el token, como el tiempo de caducidad. Incluso he visto tokens que incluyen detalles del cliente, como la versión del navegador y la información del sistema operativo, que se pueden utilizar como un tipo de huella digital.
La principal ventaja de usar un token es que solo pasa la cantidad de veces los nombres de usuario y las contraseñas. Cuanto menos necesite enviar esta información, mejor. Sin embargo, para usar los tokens de manera efectiva y segura, deben estar diseñados para su aplicación y no ser agregados posteriormente.
la otra ventaja de crear esto en tu aplicación desde el principio es que puedes probar más fácilmente los diferentes enfoques y bibliotecas que existen. Hay una serie de diferentes soluciones de autenticación y autorización basadas en token y necesita identificar cuál es la más adecuada para su arquitectura, idioma y plataforma. Haga esto desde el principio y el resto caerá en su lugar con mucha más facilidad que si lo intentara con una base de código existente.