RE: ¿Para que sirven los objetos parameter en ADO.
Muchas gracias Roger:
Por lo que dices entiendo que la protección es necesaria en SQLServer
He probado a hacer la inyección sql en Oracle y Access y no tragan. Oracle ni tan siquiera admite el punto y coma (;) en el commandtext del comando y lanza un ORA-00911: carácter no válido si lo escribes
Hice algo así:
comando.commandtext ="INSERT INTO DEPARTMENTS (department_id, department_name) VALUES (3000, 'Contabilidad');
comando.executeNonQuery
y lanzó el ORA-00911, caracter no válido
Sin embargo, al hacer
comando.commandtext ="INSERT INTO DEPARTMENTS (department_id, department_name) VALUES(3000, 'Contabilidad')"
comando.executeNonQuery
funcionó de maravilla
Si metes otra orden después del ; como DROP TABLE DPTO_80; lanza el mismo error, es decir no accede a leer una segunda instrucción SQL.
En http://www.gfc.edu.co/woakas/weblog/archives/2007/06/20/sintaxis_oracle/ se habla de esto.
Access 2003 es mas de lo mismo y ante un commandtext resultante de fundir la orden con lo insertado en los textboxes como esto:
"INSERT INTO DEPARTMENTS (department_id, department_name) VALUES (5, 'Contabilidad'); DROP TABLE DPTO_80;"
lanza una OleDbException "Se encontraron caracteres después del final de la instrucción SQL"
es decir no admite mas texto tras el ;
Si haces
"INSERT INTO DEPARTMENTS (department_id, department_name) VALUES (5, 'Contabilidad'); "
no hay problema e inserta correctamente.
¿Sabes tu hacer una inyección sql?.
Muchas gracias por tu ayuda.