Algo para añadir al capítulo de elección de contraseñas seguras: nunca rellenes el campo con la pregunta/respuesta para recuperar la contraseña en caso de fallo. Y si no hay más remedio que completarla, hazlo bien: una respuesta aleatoria, larga, con números y letras y símbolos y mayúsculas, sin sentido ninguno. Esa opción no la quieres para nada, con esto lo pones lo más lejos posible del alcance de cualquier atacante. Si además de elegir entre las predefinidas, el formulario te deja inventar tu propia pregunta secreta: más de la misma terapia (azar y buena longitud).
Ciertamente, ese tipo de formularios (extendido hasta los límites del universo) me parece de lo peor que se ha ideado en diseño y seguridad, porque pone a cualquiera a sólo un paso de acceder a toda tu información. Si te conocen mínimamente y fuiste lo suficientemente descuidado como para rellenar esos campos, estás vendido. Si eres un personaje público y tu vida es casi de dominio público, estás muy vendido.
El problema, en último término, es cosa de los programadores que utilizan un sistema tan débil como ése como medio para autenticar a un individuo. La alternativa a emplear, para mejorar la seguridad, sería la de referir a otra cuenta de correo diferente a la cual te envíen los datos de acceso que no puedes recordar o a los que no tienes acceso. ¿Por qué es más segura? Sencillo: ¿qué probabilidad hay de que te vulneren las dos cuentas al mismo tiempo? Claro que aún es posible, todo es posible, pero menos probable sí que es que te entren en todas las cuentas a la vez.
En este capítulo de diseño que reduce enormemente nuestra seguridad, la única práctica extendida en el diseño de aplicaciones web que me parece tan nefasta como ésta es la habitual práctica de pedir la contraseña de otro servicio para buscar amigos e importarlos de una web a otra. Es diferente: mientras los formularios de pregunta secreta son fáciles de adivinar por alguien que nos conozca, los segundos nos habitúan a recibir peticiones de contraseña por parte de terceras partes, aumentando el riesgo de sufrir phishing. Ambos representan claramente el modo en que no hay que programar estas aplicaciones.
Ciertamente, teniendo en cuenta que el factor humano es el mayor responsable de inseguridad informática, los programadores de aplicaciones web deberían ser más responsables y abandonar estos hábitos.