sábado, 28 de abril de 2012

All the input is evil - I de III

Hoy, en uno de esos intentos por escribir algo que no solo tenga que ver con fallos de seguridad informática me decidí a escribir un post básico sobre las vulnerabilidades más comunes en aplicaciones web y como sanitizarlas.

All the input is evil - III de III

















Trataremos básicamente los principales fallos de una aplicación web que permiten a un atacante "operar" con determinado fin y finalidad.

Hace no mucho asistí (vía streaming tampoco os volvais locos) a una charla de mi amigo @chemaalonso cuyo título era "All the input is evil", lo cual viene a explicar que todos los datos de entrada en la aplicación son malignos.

La charla fue bastante amena y estoy seguro de que a partir de ahora cuando programeis una aplicación os acordareis del título e intentareis sanitizar y controlar al máximo los parámetros de entrada (aunque siempre hay algún cafre que antepone la funcionalidad a la seguridad). }:))



1. - Inyecciones SQL básicas.

Típico caso vulnerable: news.php?new=123


Sabemos (y el programador debe de saberlo) que el código anterior es vulnerable a sql injection. También si nos fijamos sabemos que siempre usamos un id numérico, ¿entonces?
Para mi el código anterior sanitizado sería:



En casos en donde el parámetro de entrada tiene que ser alfanumérico, debemos de hacerlo de la siguiente forma:














2. - Ataque XSS (Cross Site Scripting)

Otro típico caso es el buscador en donde se imprime la palabra que se introdujo en el textbox.













Y aquí el código corregido sanitizando los parámetros de entrada:












¿Fácil no? Pues pegaros una sesión de google hacking y vereis la cantidad de sitios que "pasan" de la seguridad.


Yo me voy a sentar esperando la segunda parte de esta entrada. }:)) Saludos!


  • Stumble This
  • Fav This With Technorati
  • Añadir a Del.icio.us
  • Digg This
  • Añadir a Facebook
  • Añadir a Yahoo

0 comentarios:

Publicar un comentario en la entrada