Ver Mensaje Individual
  #17 (permalink)  
Antiguo 15/07/2005, 10:44
DarioDario
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Hola, mirá un ejemplo real de SQL inyección no te puedo dar porque no me gusta SQL y tampoco se todo. Pero te puedo dar una orientación, por ejemplo siempre es bueno pasar las variables remotas (Get o post) por addslashes()cuando van directamente a una consulta SQL, porque es aquí donde se producen los ataques.
Por ejemplo: Los nombre de usuario y contraseña siempre van directo a la consulta SQL, la consulta puede ser esta:
Código:
SELECT * FROM usuario WHERE usuario='usuario_post' AND pass='pass_post'
Pero en la contraseña en vez de enviar la contraseña el atacante envia esto:
Código:
' OR 1='1
La consulta completa quedaria:
Código:
SELECT * FROM usuario WHERE usuario='usuario_post' AND pass='' OR 1='1'
Como 1=1 siempre da verdadero se podria logear con cualquier usuario, o en su defecto como administrador, para evitar que las comillas que son enviadas en la contraseña se pasa por addslashes() y las consulta quedaria:
Código:
SELECT * FROM usuario WHERE usuario='usuario_post' AND pass=' \' OR 1=\'1'
Ves que addslashes() le antepuso una \ a las comillas simples que fue enviado en lugar de la contraseña? Bueno despues de eso ese atanque queda totalmente inservible ya que con addslashes se marcaron las comillas simples y ahora todo eso se toma como un string y no dara por validado nunca.

PD: Seguramente hay muchos errores en el ejemplo, esto solamente fue una forma de representar lo que queria explicar.

Saludos y espero que allá sido claro. Suerte.