Algunas buenas prácticas:
1. Las contraseñas JAMAS se guardan. Sobre todo cifradas. En su lugar se almacena un hash que se obtiene como función de ésta. Esto permite que no pueda ser reversible.
2. Por consiguiente se debe emplear algoritmos de reducción hash.
3. Por lo que más quieras, no inventes tu propio algoritmo. Usa algoritmos fuertes, estándares y ya conocidos y probados.
4. Además de usar un algoritmo hash estándard asegúrate de que el mismo acepte Salt.
5. Incorpora mecanismos de doble autenticación.
6. Añade elementos de seguridad alrededor del archivo, db, registro, etc. o el medio del cual te sirvas para guardar la data. De nada sirve poner los mejores algoritmos hash+salt si al final cualquiera puede hacerse del archivo. Por ej, usar perfiles de usuario a nivel SO para impedir que se tenga acceso al directorio.
7. Piensa en la seguridad física primero antes la lógica. Sobre todo si tus aplicaciones corren en C/S y sobre todo si es un servidor dedicado. Hay que reducir y limitar los potenciales puntos de acceso a la infraestructura.
8. Enseña y educa a los usuarios. Son la cadena más débil. Muchos ataques se hacen por ingeniería social. De que sirve tanta seguridad si luego el usuario tendrá pegado un papelito en su escritorio el user+password, además debe de evitarse el compartir cuentas... ¿Sabes como se hizo uno de los mayores ataques a una Central Nuclear? No se requirió de un gran super hacker... simplemente se tenía un equipo que hizo inteligencia y vigilancia a la persona indicada. Una vez robada la contraseña se entró y se enviaron e-mails con virus en archivos adjuntos... algún 2do cayó en la trampa, activo el gusano y pum.
Ahora que leíste estos puntos te invito a leerlos en el orden inverso Listo. Ya sabes por donde debes comenzar a hacer las cosas.
Saludos,