Pregunta

Estoy en las etapas de planificación de desarrollar una aplicación web que quiero hacer lo más segura posible. Tengo bastante claro cómo hacerlo desde un punto de vista técnico, pero hay un agujero de seguridad potencial masivo: quiero que el sitio tenga usuarios.

Como cualquiera que haya sido un usuario sabe, los usuarios olvidan los nombres de usuario, olvidan las contraseñas, a veces olvidan que incluso tenían una cuenta con su sitio. Los usuarios responden a los correos electrónicos de phishing y regalan sus credenciales. Si hace algo que encuentre demasiado complicado, no usarán su sitio, debe ser simple y todo sucede en la menor cantidad de clics posible, pero tenemos que equilibrarlo al hacer que sea lo más difícil posible que los usuarios accidentalmente accidentalmente Regale sus credenciales y mantenga el acceso al servicio lo más seguro posible.

Lo que estoy particularmente interesado son estrategias que van más allá de la combinación estándar de nombre de usuario y contraseña y formas de recuperar o restablecer las contraseñas que facilitan las cosas para los usuarios, pero para cualquiera que intente robar su cuenta. Sé que muchos sitios proporcionan una pregunta de seguridad adicional en conjunto de usuarios, pero debido a que no confío en los usuarios para que no creen una pregunta estúpida como "qué es 1+1", no veo cómo esto puede garantizar la seguridad.

¿Hay estrategias que puedan ser utilizables para el usuario más despistado pero desafiante para un ataque determinado y con liquidación con el objetivo de entrar en su cuenta? Si no, ¿cuáles son las cosas más cercanas que podríamos obtener? Como usuario, ¿cuáles son los mejores/peores sitios para esto que ha encontrado y por qué?

¿Fue útil?

Solución

La única forma que conozco para crear un sitio web verdaderamente seguro es requerir una contraseña y tener un dispositivo de desafío/respuesta.

Por ejemplo, TreasuryDirect.gov le envía una tarjeta con una cuadrícula de caracteres aleatorios. Como parte del proceso de inicio de sesión, se le pide que proporcione los caracteres que están contenidos en celdas específicas de la cuadrícula. Pero esto es costoso y lento; Se requiere obtener las tarjetas, rastrearlas y enviarlas. Además, si una persona pierde la tarjeta, no puede iniciar sesión hasta que los obtenga una nueva tarjeta. En el caso de TreasuryDirect, donde podría administrar millones de dólares, esta molestia vale la pena. Solo usted puede determinar si valdrá la pena para su sitio.

Otra opción es agregar una imagen de validación, como lo hacen muchos bancos. Creo que esta opción solo ayuda a frustrar algunos ataques de phishing, por lo que si crees que el phishing será un problema, esta podría ser una opción.

Creo que las otras alternativas, incluida lo que usan la mayoría de los bancos, parecen ser seguras, pero no son realmente. Preguntas de seguridad, por ejemplo, creo que los sitios de compromiso más de lo que ayudan. Otros piensan esto también.

Otra cosa será alentar a los usuarios a usar una "frase de pases" en lugar de una contraseña como Jeff Atwood recomienda. Amazon también ha adoptado este enfoque con su nueva frase de pago.

Otros consejos

Creo que no deberías reinventar la rueda. La mayoría de los sitios web tienen una solución que funcione para contraseñas olvidadas, y eso es enviar un enlace a la cuenta de correo electrónico del usuario. La única forma en que el plan se vuelve loco es si la cuenta de correo electrónico se ha visto comprometida.

Es obvio que cuanto más importantes sean los datos del usuario en su sitio web, más medidas de seguridad deberá tener, pero estas medidas de seguridad adicionales tienen un impacto en la usabilidad de su sitio. ¿Qué tan críticos son los datos en su sitio? ¿Debería tener 2 o 3 sistemas de autenticación como a veces los bancos electrónicos?

El aspecto más importante es "No confíe en la entrada del usuario". Si hace esto, la mayoría de los problemas de seguridad no existirán y no habrá un impacto en la usabilidad. Si desea ser paranoico, continúe y cree un sistema de seguridad elegante, pero no olvide que podría afectar la forma en que los usuarios usan su sitio (para lo peor). Tienes que encontrar un equilibrio entre estas 2 cosas.

A la OP: utilice los enfoques estándar para la seguridad en los sitios web. Inevitablemente habrá usuarios de imbéciles que se ahogarán y se alejarán de su sitio seguro, pero esa es la naturaleza de la bestia. Desea seguridad, tendrá que sacrificar cierta flexibilidad (y nuevamente, existen prácticas conocidas sobre seguridad que han funcionado bien desde un punto de vista fácil de usar).

Además, cuando un usuario se aleja, generalmente es por otras cosas que no sean seguridad (diseño web de mierda, navegación confusa, bajo rendimiento, falta de fiabilidad, etc.) La seguridad molesta suele ser el resultado de una arquitectura deficiente y no de seguridad misma. Ten eso en mente.

Mi única sugerencia en el frente "utilizable pero seguro" sería tener preguntas establecidas, pero respuestas enviadas por el usuario (por ejemplo, lugar notable, primer nombre de mascota, fecha notable). Aunque estos no son herméticos individualmente, hacer que respondan una combinación de dos o tres preguntas especificadas para personas debería ser lo suficientemente bueno.

Y no olvide las palabras de Captcha o similar a la velocidad o identificar el forzo bruto.

También puedes usar Ferenal y Oauth en lugar de hacer que el usuario cree una nueva cuenta

A menos que comprenda todos los casos de borde para tratar de forma segura con la autenticación y las sesiones, no lo implemente esto usted mismo.

Autenticación rota y gestión de sesiones es uno de los 10 principales problemas de seguridad de OWASP, y hay una razón para eso. "Hacerlo bien" es tan complejo que tienes que ser un experto en seguridad web.

Si es posible, use un sistema de autores de terceros. Por ejemplo, use cuentas de Google. Deja que se preocupen por todas estas cosas.

Según tu comentario

No confío en que los usuarios no creen una pregunta estúpida como "qué es 1+1" No veo cómo esto puede garantizar la seguridad.

No necesita garantizar la seguridad, de hecho, tener una pregunta como esa no debería ser un problema. Deje que los usuarios establezcan las sugerencias que necesitan.

Ahora, para el ebanking, hay un objetivo lo suficientemente jugoso como para que los phishers ganen un buen dinero, por lo que si está en el mismo espacio, puede ver lo que algunos de los bancos hacen con mucho éxito en el espacio anti -phishing - antifishing.org tiene información útil, luego aplicaciones como Rapport del fideicomisario Proporcione más seguridad en torno a la conexión y para las áreas de mayor valor usan Auth Factor 2, a menudo en forma de tarjetas inteligentes.

Las soluciones para varios niveles diferentes de riesgo y usabilidad se entienden bastante bien, por lo que es posible que sea más simple reutilizar un concepto existente que la remodelación: ¡el costo de las pruebas de usabilidad podría ser alto!

Licenciado bajo: CC-BY-SA con atribución
scroll top