Androide Magenta

08.19.09
SQL Injection y el arte del ligue

Siguiendo con el tema de la inyección de SQL del post anterior, voy a intentar explicar en que consiste para los que no tienen ni pajolera idea de lo que estamos hablando pero sienten curiosidad.

En una página Web realizada sobre un gestor de contenido, es decir todas las páginas medianas o grandes y cada vez más también las pequeñitas, por ejemplo cualquier blog como este, la información de los textos que la componen se guardan en bases de datos, y cuando accedemos a alguna de las secciones o entradas del mismo, se realiza una consulta a la base de datos para que esta nos de los textos correspondientes a dicha sección o artículo. Pues bien, para que el sistema que soporta la página Web en cuestión sepa que información es la que se precisa en cada momento del total de información que almacena en la base de datos, se le debe “preguntar” por algo específico. Igual que no vas a la biblioteca y pides “un libro”, así en abstracto, sino un título en particular o los títulos de una temática concreta, cuando se le pregunta a la base de datos lo hacemos sobre un conjunto restringido de datos “dame la información del artículo X”. Para ello en cada enlace de una de estas páginas, por ejemplo cada una de las páginas que componen este blog, junto Conca dirección base de la página en cuestión, por ejemplo www.androidemagenta.com, ponemos una información extra, llamada parámetros, que le indican al sistema lo que buscamos. POr ejemplo, vamos al enlace de mi blog “De que va esto”, vemos que la URL esta compuesta por algo como esto: http://www.androidemagenta.com/?page_id=9. La primera parte, http://www.androidemagenta.com, es la dirección base, el dominio al que hacemos la petición, y la segunda parte “page_id=9″ es el parámetro, lo que le dice a mi página que el contenido que quiero cargar es en concreto la página que tiene como identificador interno el “9″. Es decir, los parámetros nos permiten preguntar al sistema y que este nos responda algo en concreto.

Hasta aquí no es nada raro ni incomprensible. El problema reside en lo que le “dejamos preguntar” al usuario o más concretamente, lo que estamos dispuestos a que le diga nuestro sistema. Por supuesto no hay una forma directa de preguntar a un sistema por los datos de todos sus clientes, pero al igual que en la vida, hay formas indirectas para “saber”. No hace falta que te diga que estoy casado porque has visto el anillo en mi mano. No hace falta decirla nada a esa chica de si le molaba el menda o no, porque cada vez que me movía, se movía ella, cuando me alejaba se acercaba ella, cuando iba al baño ¡Ops! me la tropezaba, siempre guapísima, siempre puestísima. No hacía falta preguntar nada directamente, porque hay mil formas de saber. La encontraba cerca de mi aunque estuviéramos cincuenta amigos y al entra al bar ella estuviera en la otra punta. Me lo decía de otra forma.

Por eso me parece tan refinada y hermosa esta técnica, porque es como ligar, sabes por deducción, sin preguntas vulgares, con códigos de matemática mágica. Mola.

Claro que cuando eres padre, es decir, programador, lo normal es que le enseñes a tu hija que no se habla con desconocidos y que no le diga ni a Blas nada de ella o de su vida o de dónde vive. Para evitar problemas es mejor que sólo se responda a determinadas preguntas, formuladas de una determinada manera. Vaya, una atención de tipo funcionariado.

Para eso una de las mejores maneras es utilizar procedimientos almacenados. Explicar su uso lo dejo para otra entrada. Lo que si diré al respecto de este tema es que si estas cosas pasan es porque no se utiliza esta técnica veterana de protección de datos (entre otras causas, claro, pero de forma destacada). Y no se utilizan por dos razones. Porque obligan a pensar más los sistemas, a estructurar mejor la aplicación desde el principio y eso casi nunca se puede hacer hoy día con auténticos analfabetos dirigiendo proyectos y empresas, y porque los directivos de las empresas desarrollan sus sistemas, especialmente sus webs, al dictado de la oportunidad marketiniana de turno, sin importarles un pijo las tripas de la aplicación, “esos códigos raros” que escriben los programadores y que nadie revisa entre otras cosas porque no hay gente preparada a tal efecto al frente de muchos proyectos ¿para qué, si no se ve?  Que quieres si pones a un director de marketing al frente de un equipo de desarrollo…

En fin, a lo mejor después del pedazo de multón que les va a caer se lo piensan dos veces y hacen caso al jefe de proyectos y al cuerpo técnico la próxima vez que quieran lanzar una aplicación informática, incluidas las páginas Web.

Quiero más
08.19.09
“Structured Query Language Injection Attacks”, eso debe ser chungo…

Leo en elpais.es la noticia del mayor robo de tarjetas de crédito en la historia, con más de 130 millones de registros. Eso no es lo que me llama la atención. Veremos cosas de esas, con mayor o menor frecuencia en los próximos años, mientras se sigan almacenando los datos bancarios de nuestras tarjetas en servidores propietarios de entidades privadas. Lo que me sorprende, no por nuevo sino por repetido y poco aprendido es la redacción de la noticia. Tiene que ser muy jodido escribir de algo de lo que no se tiene ni la menor idea de lo que se está diciendo. Me explico.

El problema en si de la sustracción de tarjetas es bastante evidente por qué ocurre y cómo evitarlo, al menos en buena medida. Basta plantearnos la siguiente pregunta ¿Es peligroso pagar con tarjeta en la caja de un supermercado, o en una gasolinera o en el TPV de una tienda? La respuesta es rotunda: NO. ¿Y en un restaurante? Sí y no. No, si te traen a la mesa uno de esos TPV’s inalámbricos en los que pasan la tarjetita delante de ti, sin que la pierdas de vista en ningún momento. Sí, en cambio, cuando se la llevan a un sitio alejado de las miradas donde existen mil formas de quedarse con los datos de dicha tarjeta. El secreto, que no es tal, resulta evidente: no perder de vista la tarjeta al igual que uno no pierde de vista la cartera con el dinero en metálico. Entonces, si esto es tan claro y lo entiende cualquiera ¿por que seguimos dando nuestros datos a las empresas para que las coleccionen? Es decir, hacer eso, dejar los datos de tu tarjeta bajo la tutela de una empresa privada (y no financiera), es como dejarle tu tarjeta a la gasolinera de turno “para cuando ocurra, así cuando vuelva no te la tengo que volver a dar”. Por mucha cautela que le pongan a su custodia yo personalmente no me fiaría de su cajoncito, la verdad. Y eso es lo que hacemos literalmente cuando dejamos nuestra tarjeta a empresas como las atacadas por el pirata informático: les damos un duplicado de nuestra tarjeta “para que se vayan cobrando”.

¿Quiere eso decir que no hay que comprar en Internet? No, ni mucho menos. Se puede comprar en Internet con seguridad, pero mi consejo es que sólo se haga a través de pasarelas de pago de entidades bancarias puesto que estas tienen unos sistemas de seguridad altísimos y sobre todo, implementan todas las medidas de protección que disponen las tarjetas bancarias. Es decir, los códigos de confirmación SMS, las matrices de claves, etc. Sabemos rápidamente que estamos en una pasarela de pago de una entidad bancaria porque nos avisan en el último paso de la compra a través de Internet de que somos redirigidos a una entidad de crédito independiente. Una vez en el sitio de la entidad, que suele ser un entorno bastante austero debemos asegurarnos de que la página se ejecuta en un entorno seguro. Para eso basta con comprobar dos cosas: primero que la página empieza por https

La barra de dirección debe empezar por https

La barra de dirección debe empezar por https

y luego que hay un icono de un candadito en alguna parte de la página, generalmente en el pie de la página.

Este símbolo indica que la página se ejecuta en un entorno seguro

Este símbolo indica que la página se ejecuta en un entorno seguro

Hasta aquí la parte de consejos, pero ahora vuelvo a lo que me ha llamado la atención, es decir la parte técnica de la noticia. En fin, las chorradas que dice son muy gordas y sólo refuerzan mi teoría de que en la tierra de los ciegos, el tuerto rey. Cómo al fin y al cabo nadie entiende lo que en ella se dice, que más da ¿no? Structured Query Language Injection Attacks. Ala, ahí es nada, seguro que se ha quedado tranquilo. Para que se me entienda es parecido a cuando Urdaci dijo aquello de “cé-cé-o-o” y no Comisiones Obreras. De lo que habla es de una técnica tan conocida y extendida como la Inyección de Código SQL (Lenguaje Estructurado de Consultas), en cristiano, aunque no mucho más evidente. Ese “sofisticadísimo” lenguaje de programación que utilizan los hackers, no es ni tan sofisticado ni tan hacker. Es la forma habitual de manipular la información en una base de datos y lo conoce al dedillo cualquier programador que trabaje con bases de datos, es decir, a día de hoy, todos. Todo el resto de datos técnicos del artículo desconozco de qué manga se lo ha sacado el informante neoyorquino.

Quiero más
08.19.09
Facebook y las mentiras del tiempo

Hace meses cometí el gran error de entrar en Facebook y hacerme un perfil. Desempolvando fantasmas, con un aquí estoy yo, ya no tengo miedos. Con la excusa de que es parte de mi trabajo, me pagan por hacer cosas de estas, durante semanas estuve extasiado, sacando del baúl de los recuerdos a personas muy lejanas en el tiempo. Tanto que se me había olvidado por que me olvidé.

Allí estaban todos, veinte años después, con una capa de callo vital encima pero fácilmente reconocibles. Con hijos, maridos, mujeres, divorcios, fracasos. Y un cansancio vital ineludible. Lo cierto es que la circunstancia nos había cambiado a todos. La vida, dicen. Pero lo terrible no fue recordar que el que era gilipollas sigue siéndolo veinte años después, sino descubrir al que no lo era y ahora si lo es. O lo que es peor, al que si lo era pero la vida le ha quitado la gilipollez a hostias, como acostumbra.

Rápidamente hice cincuenta y pico “amigos”, casi todas personas que no veía desde la infancia, pues al fin y al cabo son de los que menos recuerdo cosas negativas y ellos de mi. Y ya se sabe, la consabida cenita de reencuentro. Y lo que reencontramos no fue a los viejos amigos sino las miserias más comunes, las que acechan en cada esquina.

A quien más y a quien menos le había dado tiempo de enamorarse varias veces, desenamorarse otras cuantas, arrejuntarse, estrellar las ganas contra los escaparates, defenestrar la ilusión contra la tozuda realidad. Gentes extrañas que como tantas habían confundido el culo con las témporas, el sofá con la vida conyugal, la pasión con el matrimonio, el crecimiento con los kilos, la madurez con el aburrimiento. En fin, una puta mierda. Y lo peor es que aunque lo intenté, no pude llegar a tiempo. Pero la falta de entusiasmo posterior a la reunión no dejaba lugar a la duda. Ni una foto, ni un comentario.

Lo cierto es que una cosa buena si saqué de todas esas movidas. Me acordé de por que salí corriendo. No me gustaba lo que allí había, ni en el puto colegio ni en mi querida Barcelona. Una jaula preciosa con unos pájaros muy feos. O eso es lo que yo vi.

Ahora tengo un perfil muerto de risa, me parece una chorrada como un piano en lo particular pero interesante en lo empresarial, pocos de los que aparecen como mis amigos lo son y a casi todos los que sí lo son los veo a diario.

Al poco tiempo de hacerme de Facebook, decidí casarme, cosá que haré en menos de un mes. No se si tiene algo que ver o no, pero en todo caso llevaba once años con mi novia hasta entonces. Creo que me afectó semejante escaparate de los efectos del tiempo. O que me vi en el espejo y dije, ¡joder tío, el mundo seguía sin ti! Pues ala!, borrón y cuenta nueva. Total, ya que había jodido los recuerdos con la miseria vital más absoluta, que le den por saco a la matita de flores y construyamos algo que recordar. Como los alcornoques, puedo esperar diez años más a recoger mi corteza.

Quiero más
Archivos