Como evito SQL Inyection?

Iniciado por Skeletron, 7 Diciembre 2009, 18:12 PM

0 Miembros y 1 Visitante están viendo este tema.

MazarD

#10
Lo del csrf es muy sencillo, mira:

Imaginemos que tienes un enlace como este: http://foro.elhacker.net/borrar_usuario.php?nick=Skeletron que solo puedes ejecutar cuando estas logueado.
Si yo consigo de algún modo que "hagas click" en el enlace conseguiré que borres tu usuario
Para evitarlo la aplicación web tiene que hacer que esa url no sea siempre válida, para ello lo que se hace es que cuando tu accedes a tu perfil y se muestra el enlace "borrarme" se añade al final un valor aleatorio quedando el enlace asi: http://foro.elhacker.net/borrar_usuario.php?nick=Skeletron&token=adsfadsfadfsafdas además se guarda el token en una variable de sesión.
Entonces en borrar_usuario.php se comprueba que el token existe y corresponde con la variable de sesión.
Así un usuario malintencionado necesitaría tu token para que funcionara, pero como éste cambia en cada formulario ya no es posible.

De todos modos es un ejemplo para que se entienda, el token tambien puede pasarse por post (es lo más común y lo mejor) o por cookie claro y como comenta Nakp si no previenes csrf hay muchos modos de que te obliguen a "hacer click".

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net

Skeletron

Claro claro claro.. ya entendí...
Sería como "cerrarle la puerta" al link, que se no se ejecute la operacion, a no ser que se cumpla otra condicion antes..

Podria ser tambien que el admin tenga que ir a algun lugar de la administracion, y haga click en "habilitar borrado de usuarios", y dentro de borrarusuarios.php que mire si en la base de datos si han precionado ese boton...

Como un boton que habilita un boton :P

Ya entendi, ya entendi!!!...

En cuanto a evitar el acceso a direcctorios haciendo el ../../../../, supongo que mi hosting tendrá algun tipo de proteccion para ello!!!!!!.... igualmente, no utilizo algo así en la web... Pero lo tendré en cuenta para alguna vez ;)

Y que me dicen de los ataques: rfi, lfi, ???