Ir al contenido principal

SQL Inyección con PHP. PARTE I

Hoy estaba testeando una aplicación que estoy desarrollando; ya saben, la típica que la interfaz esta hecha para todo menos para que el usuario de click en donde nunca jamas debe de dar click simplemente por que no es obvio no es razonable no es intuitivo, pero el usuario hace el click y truena el sistema, la verdad esto es molesto pero muy necesario hacer este tipo de pruebas para que cuando liberes tu aplicacion tenga lo menos posible de errores o caídas,.

Este fin de semana platique con mi cuñada y le mostré mi aplicación le pedi de favor que interactuara con ella y al cabo de tiempo me dice "que pasa si en lugar de guardar todos dejo este sin seleccionar" increíblemente no había pensado en eso, estaba tan preocupado por otros aspectos que no había colocado una validación en los campos de un formulario; seguido de esto me fui a mi casa y estuve pensando que así como deje de hacer esa validacion sencilla de campos deberían de existir mas bugs en mi aplicacion, de esta forma supe que necesitaba poner atención.






Navegando con el buen amigo Google y buscando vulnerabilidades de PHP+Mysql, me encontré con la Inyeccion SQL, pero ¿que es eso?, según Wikipedia:
Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.
En pocas palabras, la inyeccion SQL es como su nombre lo dice una inyección de código sql en una consulta previamente definida, casi siempre con el objeto de tomar información de una base de datos llegando a conseguir un user y un password para poder manipular totalmente una base de datos, para los que entienden un poco de esto habrán pensado que es realmente delicado, si nuestra aplicacion maneja información sensible para la empresa en donde se esta desarrollando es sumamente importante dotar de mayor seguridad a nuestras aplicaciones, tratare de explicar como entiendo lo que es la inyección sql a continuación un ejemplo; Supongamos que tenemos una url así:

http://mipagina.com/viewrentas.php?iden=2

Ahora bien necesitamos observar bien la url, en ella nos muestra información importante de como podría estar haciendo el programador la consulta a la base de datos llegando al siguiente query:

$sql = 'SELECT * FROM clientes
WHERE personas.id = '.$_GET['iden'];


La query anterior selecciona todos los campos de la tabla clientes donde id de los clientes sea igual a 2(esto segun nuestra url). La consulta anterior es claramente vulnerable a inyecciones SQL, ¿Por que?, eso lo tratare de explicar en mi próxima entrada.


SQL Inyección con PHP. PARTE II

Comentarios

Entradas populares de este blog

Google Docs: Activar poder ver el salto de páginas de un documento.

Ya tengo mucho tiempo usando Google Docs, de hecho puedo decir que mis documentos ya no los hago mas en ninguna suite ofimática instalada en mi computadora, la verdad es que Google Docs es un magnifico servicio, no hablare de sus pros y contras lo que les quiero comentar es que POR FIN GoogleDocs tiene la vista de el salto de página algo que yo estaba esperando hace mucho, me desesperaba mucho que al escribir no veía cuando empezaba o terminaba una página. El modo de activarlo es el siguiente lo mostrare en imagenes con un documento mio para que se vea mejor en donde se debe de hacer click. Como se muestra en la imagen para activar el poder ver el salto de página se debe de elegir "Paginated" , al hacer click se vera el salto de pagina automáticamente en el documento abierto en ese momento, si no te gusta ver este salto de pagina basta con dar click de nuevo en "Compact"  para eliminar estos saltos, que seguirán ahí pero ya no de forma visible. De nuevo cualquier

Python: Insertar campos desde Mysql

Antes ya he hecho una entrada sobre Conexion entre Mysql-Python pues bien ahora veremos como insertar campos a una tabla desde consola, básicamente se crea el arhivo de la misma forma que en el ejemplo anterior, aquí anexo el código: import MySQLdb code =raw_input("Id:") name=raw_input("Nombre:") db=MySQLdb.connect(host='localhost',user='root',passwd='root',db='usuariospy') cursor=db.cursor() sql='INSERT INTO usuarios VALUES("%s","%s")'%(code,name) cursor.execute(sql) En el anterior código se ve claramente como primero importamos la librería Mysql que nos ayuda con la conexion a la base de datos, seguido de esto pedimos dos datos y los almacenamos en variables para después abrir la conexion con la base e insertar los datos ingresados por el usuario; como pueden ver algo muy sencillo pero útil. Espero les sirva puede ver como configurar y ejecutar su primer conexion entre python y msql en mi entr

Arduino, Instalación en Debian Squeeze Linux.

La semana pasada pedí una placa Arduino Uno R3 la cual me llego el pasado lunes 11 de junio, no había tenido la oportunidad siquiera de sacar la placa de la bolsita donde me llego, debido a que estamos en finales de semestre y entre tantos proyectos y exámenes que tuve no encontraba ese hueco para jugar un rato con ella; pero hoy al fin ya estoy saliendo de los pendientes, así que como ya no tengo tanta carga de trabajos decidí abrir el paquete en el que venía el Arduino, digo paquete porque pedí otras cosas pero esas las mostraré conforme vaya jugando mas con la placa.  Acá una foto del paquete que recibí, (disculpen la calidad de las imágenes). Empezaremos a instalar el software necesario para controlar nuestra placa Arduino, lo haré en Debian Squeeze, como nota para entendernos mejor, cuando aparezca el símbolo #  en los comandos esto quiere decir que son ejecutados con permisos de administrador root. Pero bueno basta de detalles empecemos con el trabajo. 1.- Instalar