Child pages
  • Curso Acelerado de Seguridad - Episodio 1 - Nunca Confíe en Datos Exteriores

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Curso Acelerado de Seguridad - Episodio 1: Nunca Confíe en Datos Exteriores

Este artículo fue escrito por Damien Metzger, y publicado por primera vez en el blog de PrestaShop, el 22 de junio de 2011..

...

  • Nunca: En el ámbito de la seguridad, nunca debe tener como objetivo uno inferior a la perfección. Un código 99% seguro es un código que es erróneo. Un hacker no necesita mucho para entrar ilegalmente en él. Una vez que encuentra la debilidad o el punto de entrada, a menudo este puede extender su poder y añadir puertas traseras.
  • Confianza: Al decir "¡No confíe!" nos referimos a que usted debe considerar siempre todos los datos como malicioso. Siempre asuma que la variable que se utiliza ha sido creada por un hacker y nunca estará desprevenido. No trate de pensar en cómo el pirata informático puede hacerlo, sólo suponga que este lo puede realizar.
  • Exteriores: La definición de datos "exteriores" debe ser muy estricta. En general, cualquier variable que no ha sido asignada dentro de la función en la que se utiliza debe ser considerada como exterior. Incluso si usted pasó el parámetro tan sólo unos minutos antes, uste no sabe qué si otro desarrollador modifique modificará el código más adelante, ni tampoco si recuerde recuerda exactamente lo que hizo varios meses después.
  • Datos: los datos son generalmente una variable. Se pueden pasar como un parámetro en POST o GET, desde una cookie, o incluso desde $_SERVER (¡no menos exterior que el resto!). Sin embargo, los datos también puede ser el contenido de un archivo o incluso la ruta de ese archivo, la respuesta de un servicio web, el encabezado de peticiones HTTP y mucho otros. Todo lo que no se muestra directamente en el editor de código favorito es considerado datos.

...

  • Realice comprobaciones. Si usted espera un dato número entero, entonces compruebe que está utilizando uno entero. Si se trata de un MD5 Hash, entonces no debería ser otra cosa que caracteres alfanuméricos. Haga Realice expresiones regulares, la lista blanca, cuando sea posible, y la lista negra, cuando no lo sea. Tenga en cuenta sin embargo, que las expresiones regulares absorben a la al CPU, cuando sea posible utilice funciones más simples: is_numeric(), strstr(), is_array(), o is_object().
  • Realice conversiones. Con una conversión, usted está 100% seguro del tipo de datos que utiliza. Aunque, por supuesto, una conversión en cadena no va a resolver sus problemas, así que la vigilancia constante es siempre importante.