sábado, 5 de mayo de 2007

Un poco de Seguridad en la Vida

Bueno, luego de meditar un poco (de todo un poco), llegue a la conclusión (Güau, ojala que no pierda todas la neuronas por esto) de lo muy mal que programan algunas personas. Esto es debido quizas al desconociemiento de lo que sucede en realidad.
Al escribir código, no solo debemos cumplir un objetivo (que debe ser algo claro...obtener un entregable al cliente), sino que también debemos proteger dicha información para que no sea asequible (o accesible...cualquiera de las 2 está aceptada por la RAE) para el resto de las personas (me refiero a información un tanto delicada para la empresa).
Uno de los grandes problemas radica por la utilización de sentencias SQL puras. Me refiero a esto como un simple string, como por ejemplo SELECT * FROM mi_table ....ufff que fea sentencia.
Dicha sentencia se puede armar a través de una caja de texto, como por ejemplo, aquella que consulta por un tipo de producto. Esta caja de texto se llamara txtProducto. Entonces, nuestra sentencia será de la siguiente manera:

strSQL= "SELECT producto FROM tabla_producto WHERE producto=" + txtProducto;

Para el común de los mortales esto está bien, pero le cuento que no es tan asi, debido a 2 cosas (mas importantes según yo)

1) se puede insertar codigo SQL, o también llamado SQL Injection. Esto es que agreguemos o alarguemos nuestra sentencia SQL como nosotros queramos. Ejemplo:

En la caja de texto escribimos "espacio'union SELECT @@SERVERVERSION,0,null,0-- . De esta manera obtenemos que servidor es el que se esta utilizando.

2) Al enviar una consulta SQL pura, el servidor de base de datos es mas lenta. (no voy a hacer mayor hincapié en esto).

Como podrán leer, una pequeña recomendación radica en tratar de utilizar procedimientos de almacenado o en el caso de que no los programos utilzar, entonces deberiamos restringir las entradas por texto.

Saludos

No hay comentarios: