Stack Overflow en español Asked by Orlando Sandoval M. on November 15, 2021
necesito implementar un Token en una WebApi con C# y SQL Server, toda la información que he encontrado utiliza un correo electrónico para registrar y autentificar a los usuarios. Pero lo que se requiere es un login simple, es decir, implementar un registro de usuarios del tipo "administrador / password" sin utilizar un correo electrónico.
Al crear el proyecto utilice la opción "Individual User Accounts", lo que me obliga a usar un email para crear y autentificar a los usuarios, pero no es lo que necesito.
Y al hacerlo de forma manual he visto que almacenan el token en la BD asociado al id del usuario, pero no sé si es una buena práctica.
¿Cuál es la forma correcta para hacer esto?
Desde ya muchas gracias,
Resuelto,
Tomé las recomendaciones y mantuve el campo de correo electrónico para el registro y login. También extendí la clase utilizada por el framework y añadí los campos que necesitaba.
Gracias!
Los metodos para almacenar passwords en una base de datos En particular recomiendo la lectura de las mejores practicas de seguridad de OWASP https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
La principal alternativa es el Hashing que permite basicamente encriptar los datos en un solo sentido (a diferencia de la Encriptacion que puede ser en dos sentidos, encriptar y desencriptar).
Se agregan algunas mejoras al Hashing para agregarle mas seguridad: Salting (agregarle "sal") y tambien Peppering (agregarle "pimienta") lo que basicamente significa incorporar algun dato secreto adicional al hash, cosa de que no sea facilmente reconocido por un detector de hashes conocidos o de fuerza bruta (https://www.md5online.org/md5-decrypt.html)
Depende del tipo de base de datos para saber que funciones de hash tienes disponibles, pero basicamente los datos se almacenan usando una funcion de hash:
UPDATE user set password=md5(CONCAT('mysecretsaltkey','password'))
El resultado almacenado, a pesar de que puede ser visualizado, sera dificil de ser reconocido.
Igualmente de manera muy basica, para la verificacion se requerirá el mismo tratamiento para el password del usuario:
SELECT * FROM user WHERE user='myusername' and password=md5(CONCAT('mysecretsaltkey','user_entered_password'))
Answered by F.Igor on November 15, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP