¿Cuál es la técnica más segura para autenticar usuarios en un sitio web?

5

Por lo general, le pido al usuario su nombre de usuario y contraseña y ejecuto una consulta en la base de datos para devolver el valor verdadero o falso. ¿Crees que es lo suficientemente seguro? ¿Crees que es mejor agregar algunos pasos al procedimiento?

    
pregunta ePezhman 10.04.2013 - 09:12
fuente

6 respuestas

5

"Seguridad" abarca todo el sistema, incluido su servidor, su base de datos, el mecanismo de transporte entre el cliente y el servidor, el navegador del cliente ... y el usuario humano. Por lo general, este último elemento será el cuello de botella de la seguridad. Puede (y debe) hacer muchas cosas para procesar la contraseña correctamente (use HTTPS para la transferencia, almacene solo un < a href="https://security.stackexchange.com/a/31846/5411"> hashing correctamente versión de la contraseña, ...) pero, en última instancia, su seguridad no será mayor que la atención con lo que el usuario elegirá y mantendrá privada su contraseña.

Puede ayudar al usuario con educación y proporcionando herramientas de generación de contraseñas , cuidando de halagar al usuario para que coopere, en lugar de obligarlo a que lo envíe (los usuarios enojados nunca son una buena cosa para la seguridad) Sin embargo, las contraseñas estándar solo lo llevarán tan lejos (por "estándar" me refiero a "contraseñas que los usuarios humanos recuerdan en su mente").

Los

métodos más pesados con al menos potencial para una mayor seguridad incluyen:

  • contraseñas de un solo uso , ya sea impresas en un papel o generadas sobre la marcha por un dispositivo de hardware como < a href="http://en.wikipedia.org/wiki/SecurID"> this ;
  • Certificados de cliente SSL, almacenados en las entrañas de la máquina del usuario o, para una mejor resistencia, en una tarjeta inteligente ;
  • sistemas biométricos , que tienen sentido, desde el punto de vista de la seguridad, siempre que la característica física que se mide sea razonablemente secreta (por ejemplo, un escáner de retina, a diferencia del reconocimiento facial, porque su rostro no es secreto en absoluto, se lo muestra a todo el mundo cada vez que va a la calle) o hay una función contextual (un guardia armado) que garantiza que está colocando su propio dedo biológico real en el lector de huellas dactilares;
  • combinaciones de varios de los anteriores.

Los profesionales de seguridad a menudo hablan de autenticación de múltiples factores como un marco de clasificación genérico para los métodos de autenticación, lo que puede ayudar al evaluar a qué tipo de ataques se resistiría el sistema (esta clasificación a menudo se utiliza en juicios simplistas como "2FA es bueno, 1FA es malo", que se relaciona más con el cumplimiento administrativo y las relaciones públicas que con la seguridad real).

    
respondido por el Tom Leek 10.04.2013 - 15:29
fuente
2

Depende del punto de vista en el que desee aumentar la seguridad, puede agregar formas adicionales de autenticación y verificación, por ejemplo:

Algo que podría ser interesante es agregar autenticación de dos factores. Por ejemplo, Google ofrece Google Authenticator . Lo que requiere que sus usuarios ingresen adicionalmente un token generado aleatoriamente (el token se genera en su teléfono inteligente).

Además de autenticarlos, también puede verificar desde qué lugar del mundo se están conectando. Por ejemplo, si se estaban conectando desde los Países Bajos y de repente están iniciando sesión desde una IP en Brasil, algo podría estar mal. Por lo tanto, es mejor bloquear temporalmente la cuenta y enviar al usuario un correo electrónico con un enlace de notificación y reactivación. De esa forma, si el usuario que intenta iniciar sesión es legítimo, podrá reactivar su cuenta. De lo contrario, notarán que alguien en Brasil conoce su contraseña. (Esto no es infalible si los usuarios reutilizan las contraseñas de su correo electrónico).

    
respondido por el Lucas Kauffman 10.04.2013 - 09:16
fuente
1

Puede configurar Apache (y asumo que IIS) para que solo acepte conexiones donde el cliente tenga un certificado, y puede requerir autenticación de dos factores (contraseña / clave de una sola vez) después de eso. Parece una exageración, pero no es tan difícil de implementar, si controla los dispositivos desde los que se conectarán los usuarios (piense en el correo web corporativo, donde posee la computadora portátil / teléfono).

Aquí hay una buena explicación: enlace

    
respondido por el Hybrid 10.04.2013 - 09:36
fuente
0

Es suficiente para la mayoría de los sitios web, pero si está ejecutando un sitio web bancario o de otro servicio financiero, puede usar la autenticación de dos factores.

Las otras respuestas han analizado el autenticador de Google y el uso de la ubicación geográfica para rastrear el origen de la solicitud de autenticación. Si tiene una puerta de enlace móvil configurada, puede incluso enviar una Contraseña de un solo uso (OTP) en el teléfono móvil del usuario para autenticarlo además de las credenciales habituales.

Recuerda una cosa, agregar un nivel adicional de autenticación agrega seguridad, pero nunca debes descuidar el factor de experiencia del usuario, que es esencial para que cualquier sitio web tenga éxito. A menos que esté ejecutando un sitio web que se ocupe de transacciones financieras, no moleste a sus usuarios con funciones de seguridad adicionales. Un sitio web de juegos o un foro de discusión pueden hacerlo con una autenticación simple.

    
respondido por el Shurmajee 10.04.2013 - 12:24
fuente
0

Podrías:

  1. use un sistema operativo siempre actualizado;

  2. use el protocolo HTTPS en su página de inicio de sesión para asegurar la información de inicio de sesión;

  3. use las cookies para la autenticación de los usuarios después de iniciar sesión;

  4. habilite una autenticación de dos factores (un ejemplo es Google Authenticator);

  5. almacene la IP de los usuarios y el acceso de inicio de sesión para identificar un posible ataque;

  6. usar una protección de fuerza bruta, la autenticación de dos factores es una forma, otra forma es usar mi último proyecto Colobe para identificar automáticamente Los ataques de fuerza bruta y los bloquean.

respondido por el Nicola Pesavento 10.04.2013 - 09:51
fuente
0

Un paso que podría hacer que su sitio sea más seguro sería eliminar la autenticación basada en la búsqueda de la base de datos de su aplicación web principal y la base de datos y mover esa autenticación a su propio servidor (o al menos a un proceso separado), comunicándose a través de una API de servicios . De esa manera, incluso si alguien compromete el sitio web, no podrá acceder fácilmente a todos los hashes de contraseña.

Este es un ejemplo de separación de privilegios : mover operaciones con privilegios desde un código sin privilegios.

Un servidor LDAP se usa a menudo como un servidor de autenticación, pero se debe tener cuidado de usar un método de autenticación seguro.

    
respondido por el Johnny 11.04.2013 - 00:27
fuente

Lea otras preguntas en las etiquetas