Sobre "SQL INJECTION"

09/12/2004 - 15:08 por Carlos A. Díaz | Informe spam
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa algun
parametro ?

Gracias por aclararme las dudas

Saludos

Preguntas similare

Leer las respuestas

#1 Maxi
09/12/2004 - 15:22 | Informe spam
Hola, a ver:

Si usas Sql desde la aplicacion hay varios problemas a resolver

1) Le debes dar accedo directo a las tablas a los usuarios (a menos que uses
roles de aplicacion)
2) Si envian 1000 consultas iguales se ejecutaran mill veces sin aprovechar
las cache
3) Si el dia de mañana cambias un campo en una Tabla vas a tener que ver en
todos los aplicativos que llama a esa tabla
para hacer las modificaciones

Estos temas los resuelve muy bien los SP :)

Ahora el injection se puede dar igual en uno u otro metodo si no se tienen
algunos recaudos


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa algun
parametro ?

Gracias por aclararme las dudas

Saludos

Respuesta Responder a este mensaje
#2 Carlos A. Díaz
09/12/2004 - 17:16 | Informe spam
Hola Maxi: entonces cual es el mejor metodo o el que vos usas (si se puede
decir) para evitar los injection en los sp.

Saludos

"Maxi" escribió en el mensaje
news:
Hola, a ver:

Si usas Sql desde la aplicacion hay varios problemas a resolver

1) Le debes dar accedo directo a las tablas a los usuarios (a menos que
uses roles de aplicacion)
2) Si envian 1000 consultas iguales se ejecutaran mill veces sin
aprovechar las cache
3) Si el dia de mañana cambias un campo en una Tabla vas a tener que ver
en todos los aplicativos que llama a esa tabla
para hacer las modificaciones

Estos temas los resuelve muy bien los SP :)

Ahora el injection se puede dar igual en uno u otro metodo si no se tienen
algunos recaudos


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa
algun parametro ?

Gracias por aclararme las dudas

Saludos





Respuesta Responder a este mensaje
#3 Javier Loria
09/12/2004 - 17:25 | Informe spam
Hola:
Umm.
a) Es posible inyectar codigo de SQL directamente a la aplicacion o a
procedimientos almacenados que usen SQL Dinamico. Usar Procedimientos
Almacenados protege PARCIALMENTE del codigo inyectado, siempre y cuando no
se aplique SQL Dinamico. Lo de la proteccion parcial es porque si la
aplicacion construye la ejecucion del procedimiento concatenando caracteres
estas igualmente expuesto.
b) NO. Los procedimientos almacenados son una gran herramienta y lo han
sido siempre porque ayudan en varias "dimensiones". Seguridad es la primera
razon, despempeno es muy frecuente, facilidad de mantenimiento y separacion
del esquema tambien suelen ser tambien frecuentes. En algunas ocasiones los
procedimientos NO son la herramienta adecuada y atentan contra la
seguridad/desempeno/mantenimiento de la aplicacion.
Un ejemplo facil, como se hace un procedimiento que permita la usuario
seleccionar cualquiera de las columnas y filtrar basado en una condicion?
Personalmente conozco 2 respuestas que no son correctas (WHERE CASE WHEN
@PorUsuario=1 AND ...END=1 OR ) o SQL Dinamico. La respuesta correcta es
NO USAR SP para este logica. Otro facil es Reglas de Negocio (flujo,
mantenimiento de estado).
c) Si es posible. 2 formas conocidas.
i) Si el programador usa procedimientos y los contruye concatenando
valores, esta igualmente expuesto que si fuera una tabla. Si usas
txtSQL.Text="HagaAlgo_SP '"+txtParametro.Text+"'"
Si el Parametro tiene un valor de ';DROP TABLE AlgunaTabla;-- igualmente
se inyecta codigo.
ii) Si usar SQL Dinamico, en cuyo caso esta pero porque ahora esta
corriendo con el "contexto" de seguridad del usuario que creo el
procedimiento y no con la del usuario que ejecuta. Revisa:
http://www.hayes.ch/sql/sql_dinamico.html
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> wrote in message
news:
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa algun
parametro ?

Gracias por aclararme las dudas

Saludos


Respuesta Responder a este mensaje
#4 Maxi
09/12/2004 - 17:32 | Informe spam
Hola, no hay un metodo en si :), te puedo pasar un link para que empieces
mirando ;)

http://www.configuracionesintegrale...p?articulo4


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Hola Maxi: entonces cual es el mejor metodo o el que vos usas (si se puede
decir) para evitar los injection en los sp.

Saludos

"Maxi" escribió en el mensaje
news:
Hola, a ver:

Si usas Sql desde la aplicacion hay varios problemas a resolver

1) Le debes dar accedo directo a las tablas a los usuarios (a menos que
uses roles de aplicacion)
2) Si envian 1000 consultas iguales se ejecutaran mill veces sin
aprovechar las cache
3) Si el dia de mañana cambias un campo en una Tabla vas a tener que ver
en todos los aplicativos que llama a esa tabla
para hacer las modificaciones

Estos temas los resuelve muy bien los SP :)

Ahora el injection se puede dar igual en uno u otro metodo si no se
tienen algunos recaudos


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en
el mensaje news:
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa
algun parametro ?

Gracias por aclararme las dudas

Saludos









Respuesta Responder a este mensaje
#5 Carlos A. Díaz
11/12/2004 - 21:12 | Informe spam
Gracias Javier y Maxi.

Estoy usando sp porque me deprimi con SQL DINAMICO y me decidi a migrar todo
a sp. Mi duda es, por ejemplo tengo un sp:

..sp_usuarios @Usuario VARCHAR(128) AS
SELECT * FROM USUARIOS WHERE USUARIO=@USUARIO

1) si desde vb lo llamo como:

rst.open("sp_usuarios '" & usuario & "'",conect,..

hay posibilidad de INJECTION ?

2) creando un command y sus parametros, y luego ejecutarlo, hay posibilidad
de INJECTION

Esoero vuestras respuestas, Saludos.

"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Leyendo articulos sobre el tema me queda unos pensamientos y dudas:
1) NO se deberia usar SELECT, INSERT, DELETE ni nada de eso desde una
aplicación puesto que se corre peligro, es eso completamente correcto o
depende de la autenticación.
2) TODO deberia ser SP ?
3) se puede aun utilizando SP, que usen SQL INJECTION cuando se pasa algun
parametro ?

Gracias por aclararme las dudas

Saludos

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida