Injeccion SQL?

23/08/2007 - 18:38 por Antonio Ortiz | Informe spam
Que me han hackeado un sitio, y no se exactamente como, les cuento un poco

Tengo un portal para empresas, donde se registran y colocan sus datos que se
muestran en un directorio, el unico lugar donde meten datos es al iniciar
sesion con su nombre de usuario y contraseña y donde capturan sus datos.

Un dia cualquiera los datos de una empresa estan cambiados con un mensaje de
un sitio hacker, los datos de esa empresa son precisamente los mios,
capturados como ejemplo.

Me podrian decir como evitar esto?, que medidas puedo tomar?,

pueden injectar codigo sql por el nombre del usuario (o password) para ? ,
el codigo que valida esto es un simple 'select usuario, pass from usuarios
where nombre=varnombre and pass=varpass' (similar)


gracias


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com

Preguntas similare

Leer las respuestas

#11 Alejandro Mesa
23/08/2007 - 20:14 | Informe spam
Antonio Ortiz,

Como comentaron Isaias y Salvador, puedes evitar esto si usas procedimientos
almacenados que hagan uso de parametros. Si usas sps pero vuelves a hacer la
concatenacion, entonces te expones al mismo problema, lo que esta vez en la
parte del servidor.

1 - Usar procedimientos almacenados con parametros que se usen directamente
en la sentencia.

create procedure dbo.chequear_usuario (
@nombre varchar(25),
@pass varchar(25),
@validado int output
)
as
set nocount on

if exists (select * from dbo.usuarios where nombre = @nombre and pass = @pass)
set @validado = 1
else
set validado = 0
go

2 - Si insistes en armar la sentencia en el lado de la aplicacion cliente,
debes parametrizarla y usar el objeto SQLCommand y llenar la coleccion de
parametros. Puedes parametrizar la sentencia o usar sp_executesql
directamente en tu codigo.

Te paso un link donde se toca todo este tema al detalle.

Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html

SqlCommand.Parameters Propert
http://msdn2.microsoft.com/en-us/li...parameters(VS.71).aspx

Using Stored Procedures with a Command
http://msdn2.microsoft.com/en-us/library/yy6y35y8(VS.71).aspx

Tomen esto como algo serio y que le puede pasar a cualquiera. Hace uno o dos
meses, la sucursal de Microsoft en UK fue atacada usando este metodo. Aqui
les paso la noticia.

http://www.pcworld.com/article/id,1...ticle.html


AMB

"Antonio Ortiz" wrote:

Mostrar la cita
#12 Antonio Ortiz
23/08/2007 - 20:34 | Informe spam
Gracias por el ejemplo tan claro, pero si en @pass incluyo una condicion del
tipo And '1 and 1' no funciona igual a concatenar?

saludos,


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#13 Antonio Ortiz
23/08/2007 - 20:38 | Informe spam
quise poner ' And 1=1


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Antonio Ortiz" escribió en el mensaje
news:
Mostrar la cita
#14 Alejandro Mesa
23/08/2007 - 20:44 | Informe spam
Hola Antonio,

Mostrar la cita
Claro que no. SS buscara en la columna [pass] una fila que cumpla que el
valor de esta columna sea igual a '1 or 1=1' y que ademas el valor de nombre
sea el que se paso como parametro. SS no hace macrosustitucion.


AMB


"Antonio Ortiz" wrote:

Mostrar la cita
#15 Antonio Ortiz
24/08/2007 - 06:57 | Informe spam
Aaah gracias, esa es la palabra que buscaba, la guardare entre las cosas
importantes
No 'macrosustitucion'

Gracias nuevamente,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida