Tips para protegerte contra SQL Injection

Seguridad... que tema tan delicado, y aún más en una profesión donde lo importante es el manejo de la información, esa responsabilidad de escribir código y más código para manipular dicha información, hacerla llegar de un lado a otro, presentarla de distintas formas, encriptarla, desencriptarla, etc. Sin duda alguna la seguridad de la información es un tema para hablar horas y horas, y que implica muchas técnicas para salvaguardarla, y quizás aquí en MoztroDev no seamos unos eruditos en seguridad, pero podemos aplicar alguna que otra técnica para hacer que nuestros sistemas sean menos vulnerables, sobre todo para el tema que encabeza este post: SQL Injection.



¿Qué no sabes que es SQL Injection? Pues pasa primero por aqui. Ahora que ya lo tenemos captado continuemos.



Un ejemplo clásico de cómo nos pueden inyectar SQL es en los formularios de login. La mecánica es muy sencilla, si tenemos un formulario como el siguiente: 




Lo normal es que para validar las credenciales introducidas por el usuario, en nuestro código realicemos un procedimiento como el siguiente:




La instrucción sql que se formaría al introducir los datos sería algo como esto:



Precisamente, aquí es donde radica el error, el hecho de concatenar las cadenas en la instrucción sql es lo que lo hace vulnerable a sql injection. Veamos que pasa si introducimos los siguiente datos: En usuario 1 y en contraseña ' or 1=1--




Como vemos la instrucción sql formada evaluará si existe un Id en base de datos con las credenciales introducidas pero a su vez también evaluará que la condición 1=1 sea cierta, por lo que devolverá todos los Id de los usuarios en base de datos. Así de simple, hemos sido inyectados con sql. Esto daría pie a un sin fin de códigos maliciosos, pudiendo hacer algo como lo siguiente:




Si, lo se, muy doloroso, pero no se preocupen que así como es tan fácil inyectar sql, también es fácil prevenirlo. Veamos como hacerlo.

El truco está en crear nuestras sentencias sql parametrizadas, por ejemplo en nuestro código c# nos quedaría de la siguiente manera:


Y listo, eso es todo, así de simple. Ahora que si quieren hacerlo en:

Java


Php


Python



O pueden hacerlo a través de Stored Procedures, pero siempre y cuando la instrucción esté parametrizada.


Saludos
Tips para protegerte contra SQL Injection
0 Puntos Score: 0/10
Visitas: 1141 Favoritos: 12
3 Comentarios Tips para protegerte contra SQL Injection
buen aporte, pero esa parte si lo se, pero fue una forma de recordar, como deje de progrmar, pero gracias, te daria punto pero cmo no puedo
Muy util, gracias!
Para dejar un comentario Registrate! o.. eres ya usuario? Accede!