¿Qué debo saber sobre la seguridad en Internet para crear una aplicación web que tenga un inicio de sesión de usuario?

Supongamos que un atacante ha obtenido su base de datos a través de medios nefastos.

Si almacena los nombres de usuario y las contraseñas en texto plano, todo se ve comprometido de inmediato. Es probable que el atacante también tenga contraseñas para varios otros sitios para estos usuarios.

Un truco es descifrar la contraseña. El problema es que pueden usar una mesa arcoiris para atacarla. Eso básicamente significa que pueden revertir el hash.

Para evitar esto, tiene varias opciones. Primero, utiliza un algoritmo hash relativamente lento. Esto hará que les tome más tiempo atacar los datos. La compensación allí es que los usuarios legítimos en el sitio activo tendrán mucho retraso. Blowfish si uno que he leído es muy efectivo.

Luego, usas una sal. Una sal es una cadena de caracteres generada aleatoriamente que anexas a la contraseña antes de hacer un hash para que sea más difícil de descifrar.

Para obtener mejores resultados, puede resaltar y volver a mostrar la contraseña a todos los que inicien sesión.

Puedes buscar en google pez globo y sal para encontrar algunos tutoriales detallados sobre cómo hacer esto. Encontré uno excelente sobre cómo hacer esto con PHP que fue genial y lo vincularé para poder encontrarlo más tarde.

Además, debe usar https durante el inicio de sesión.

Además, para una mayor protección, puede cifrar la base de datos. El servidor SQL tiene un cifrado de datos transparente realmente simple para cifrar sus datos en reposo de modo que incluso si obtienen sus bases de datos (suponiendo que no obtuvieron una inyección SQL que les permita volcar sus datos o si tienen acceso a el propio dbms), no podrán leerlo sin la clave.

Además, bloquee las cuentas de su base de datos para obtener el menor acceso del usuario. No permita que una cuenta que ingresa datos tenga acceso al campo de contraseña. No permita que la cuenta de lectura tenga acceso tampoco. Solo permita que la cuenta que autentica tenga acceso.

En lugar de hash, aprenda sobre el cifrado de contraseñas. Si está consultando a una base de datos, asegúrese de usar consultas parametrizadas para evitar cosas como la inyección de SQL. Además, no use solicitudes GET para cosas como contraseñas. En su lugar, use las solicitudes POST.

Hay una gran cantidad de factores. El mejor lugar para revisarlos es el proyecto owasp.org https://www.owasp.org/index.php/ … tiene las 10 vulnerabilidades más comunes.

Cifre todo y no almacene contraseñas. Envíe un correo electrónico con un enlace de inicio de sesión o permítales usar oauth2 con una red como Facebook, Google +, etc.