Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como evitar la inyección...

Estas en el tema de Como evitar la inyección... en el foro de SQL Server en Foros del Web. Saludos amigos del foro, espero esten todos muy bien. Tengo una pequeña aplicación donde el usuario debe colocar el nombre de usuario y la contraseña. ...
  #1 (permalink)  
Antiguo 27/07/2009, 13:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 123
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Como evitar la inyección...

Saludos amigos del foro, espero esten todos muy bien. Tengo una pequeña aplicación donde el usuario debe colocar el nombre de usuario y la contraseña. Pero no le tengo ninguna validación a los campos ni a la sentencia sql. Pues coloco ' or '1'='1 en los campo y logra pasar la inyección. Este es el siguiente código que utilizo:


ssql = "select * from usuario,vendedor where usuario.nombre_usuario='" & request.form("usuario") & "' and usuario.clave_usuario='" & request.form("clave") & "' and usuario.id_usuario=vendedor.id_vendedor"
Set con = Server.CreateObject("ADODB.Connection")
con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & server.MapPath("bd.mdb")
set rs = con.Execute(sSQL)



  #2 (permalink)  
Antiguo 27/07/2009, 14:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Como evitar la inyección...

REGLA UNIVERSAL para evitar la inyeccion de codigo, NO mandar T-SQL desde tu aplicativo, siempre ejecutar PROCEDIMIENTOS ALMACENADOS y creo sin dudar, esta seria UNA de las medidas a tomar.
  #3 (permalink)  
Antiguo 28/07/2009, 01:58
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 7
Respuesta: Como evitar la inyección...

Asi es doc..
  #4 (permalink)  
Antiguo 30/07/2009, 01:15
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Como evitar la inyección...

Coincido plenamente con lo anterior. No obstante, también podrías validar previamente los valores antes de introducirlos en la cadena SQL.

Código ASP:
Ver original
  1. Dim usuario = request.form("usuario")
  2. Dim clave = request.form("usuario")
  3.  
  4. 'Eliminas de las variables usuario y clave los caracteres que te puedan estropear la consulta, como la comilla simple, las palabras "DECLARE", "CAST(", etc. utilizadas para inyecciones SQL...
  5.  
  6. ssql = "select * from usuario,vendedor where usuario.nombre_usuario='" & usuario & "' and usuario.clave_usuario='" & clave & "' and usuario.id_usuario=vendedor.id_vendedor"
  7. Set con = Server.CreateObject("ADODB.Connection")
  8. con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & server.MapPath("bd.mdb")
  9. set rs = con.Execute(sSQL)
Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 30/07/2009, 09:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Como evitar la inyección...

Bravenap, No es cuestion de "validar", es cuestion de MEJORES PRACTICAS en el diseño de sistemas.

Veamos, te pongo un ejemplo, suponiendo que tienes un aplicativo que tiene muchos modulos, muchas pantallas y que en cada una de ellas, haces referencia a un simple SELECT * FROM CLIENTES_CENTRAL y que por razones de crecimiento, bla, bla, bla, bla, tienes que cambiar tu tabla por CLIENTES (singular), ¿Que tendrias que hacer?.............MODIFICAR todo tu aplicativo.

De ahi la propuesta, NO enviar codigo T-SQL desde el front.
  #6 (permalink)  
Antiguo 30/07/2009, 23:58
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Como evitar la inyección...

Cita:
Iniciado por Bravenap Ver Mensaje
Coincido plenamente con lo anterior. No obstante, ...
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:49.