Cuál es el modo más seguro de almacenar passwords en PHP

Buenas prácticas
Es bastante común últimamente recibir noticias de que algún sitio de gran popularidad ha sido hackeado (O, como suele comunicarse, "su seguridad se ha visto comprometida"). Dependiendo del tipo de sitio del que se trate el problema puede preocuparnos más o menos. Pero eso es cuando somos meramente usuarios del sitio... ¿qué pasa cuándo se trata de un sitio que está bajo nuestra responsabilidad? Aclaremos algo antes de seguir: es imposible hacer un sitio 100% libre de vulnerabilidades. Si hay gente decidida (y capaz) a romper nuestra seguridad lo van a lograr. Es por eso que es muy importante, no sólo poner trabas a los atacantes si no también dejar un botín poco atractivo para el caso de que lo consigan. Algo bastante común es que la gente reutilice sus contraseñas…
Leer más
Cómo prevenir los ataques por SQL Injection en aplicaciones PHP

Cómo prevenir los ataques por SQL Injection en aplicaciones PHP

Cómo hacer para...
Uno de los fantasmas más temidos por quienes contratan servicios de desarrollo (especialmente cuando se trata de su primera experiencia) es el de los ataques de hackers. Si bien es imposible asegurar al 100% un sistema (de software o de cualquier otro tipo), existe una serie de buenas prácticas que disminuyen sensiblemente la probabilidad de ocurrencia de tales ataques (o al menos, su probabilidad de éxito). Por lo general, los ataques se basan en la explotación de código vulnerable como ser algún caso raro que el desarrollador no tuvo en cuenta. Uno de los ataques más usuales es el conocido como sql injection. De lo que se trata es de ejecutar código sql sin autorización. Los scripts de PHP que no están bien escritos pueden ser atacados de esta forma. Veamos un ejemplo: <?php $sql…
Leer más
Algunas consideraciones de seguridad cuando se suben archivos vía PHP

Algunas consideraciones de seguridad cuando se suben archivos vía PHP

Buenas prácticas
Php permite subir archivos vía HTTP de un modo bastante simple (Si tenés dudas consultá acá). Un uso bastante común de esta funcionalidad es la de permitir al visitante ingresar imágenes, por ejemplo: su foto de perfil. Existe una serie de consideraciones respecto de la seguridad a tener en cuenta cuando se realiza una tarea de este tipo. Con estas medidas estamos intentando evitar que un atacante engañe a nuestro sistema subiendo código malicioso que podría, por ejemplo, darle acceso a información privilegiada. Validar que el archivo recibido sea del tipo esperado Lo primero de lo que querremos estar seguros es de que el archivo que acabamos de recibir sea efectivamente una imagen (GIF, JPG, etc...). La forma inocente de hacer esta verificación es a través del nombre del archivo (si las últimas…
Leer más
Dónde almacenar la configuración de una aplicación PHP de forma segura

Dónde almacenar la configuración de una aplicación PHP de forma segura

Buenas prácticas
Una pregunta que me llegó de un amigo que viene del mundo .Net (Que parece ser un poco más organizado o estandarizado que el nuestro :). Lo primero que deberíamos preguntarnos es de qué nos estamos queriendo proteger. Por lo general, la posibilidad de que alguien externo a nuestra organización tenga acceso a la configuración de nuestra aplicación no parece muy tentadora... ¿por qué? Básicamente porque puede haber información sensible (Como ser contraseñas, nombres de hosts donde están las bases de datos, etc...) que podrían dar a un atacante una ventaja importante si decidiera hacernos un daño. Una línea de defensa que tenemos es guardar estos archivos en un directorio que no sea públicamente accesible. Si usás el webserver Apache, conocerás seguramente la directiva DocumentRoot: lo que está "a la vista" de…
Leer más