En la cuarta parte, también es útil usar
Fileinfo.
En la quinta parte, lo mencionas pero encuentro que no muy claro (bueno al menos lo vi así), sería bueno indicar que el proyecto esté fuera del directorio que es público. Podrías también dar ejemplo para que se entienda completamente.
En la novena parte, el problema de md5 es que es tan rápido (porque de eso se trata, que sea lo más rápido igual sha1) que los que tratan de robar la contraseña con fuerza bruta lo logran con tarjetas de gráficos o cosas similares que corren miles (creo que hay algunas que pueden correr millones de veces) y con 1 o 2 días hackear la contraseña. Por eso se recomienda el uso de
crypt (yo uso esa con CRYPT_BLOWFISH)
Código PHP:
Ver originalecho crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$');
el $2a$07 indica que tipo de algoritmo y velocidad con que va a correr el algoritmo. Si los dos dígitos despues del último $ son mayores más lento es el algoritmo, al menos a mi no me funcionó despues de 11, se tardó mucho. Al final la idea es que se tome un tiempo para evitar este tipo de ataques.
PD: Si vas a continuar el tema, borro esto y luego lo coloco al final, para no interrumpir lo que estás haciendo, muy bueno