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.
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.
All the input is evil - II de III
All the input is evil - III de III
Fuente: http://www.seginformatica.net
Basicamente es la relidad en las aplicaciones web aún asi por ejemplo El XSS no quedaría bien sanitizado
ResponderEliminarClaro estas son formas básicas, en relidad este post esta dirigido para aquellos que estan aprendiendo a programar, porque de otra manera por ejemplo cuando haces WHERE newid le meterias la variable GET vulnerable; como este artilujio hay otros más complejos...
ResponderEliminarSaludos!