| Artículos | 01 FEB 2007

Seguridad en Ajax

Tags: Histórico
Nuevas vulnerabilidades en la Web 2.0
Gonzalo Álvarez.
Ajax se está convirtiendo en pieza clave de la nueva generación de aplicaciones conocidas como Web 2.0. Ajax permite intercambiar pequeñas cantidades de información entre el servidor y el navegador del usuario sin necesidad de refrescar toda la página web en cada respuesta del servidor. Si bien Ajax mejora espectacularmente la experiencia del usuario, también crea nuevas posibilidades de ataque cuando la aplicación no se diseña con la seguridad en mente. En este artículo se repasan los vectores potenciales de ataque y se ofrece una breve guía de mejores prácticas.

En el mundo de las Tecnologías de la Información todos los años suelen aparecer palabras de moda (buzzwords), detrás de las cuales a menudo no se ocultan más que volutas de negro humo. Una palabra que últimamente está sonando con fuerza en los foros de desarrollo de aplicaciones web es Ajax. ¿Se trata de un detergente? ¿De un equipo de fútbol holandés? ¿Un héroe mitológico? No. Afortunadamente, en este caso no se trata de una mera palabra vacía en boca de comerciales, sino de una combinación de tecnologías web ya existentes en una forma creativa para obtener resultados a veces sorprendentes. La incorporación de Ajax a las páginas de un sitio web las dota de mayor dinamismo, rompiendo el flujo normal de navegación, clic-espera-resultado, pasando a una interacción sin demoras con cualquier elemento aislado de la página. Gracias a Ajax se pueden crear aplicaciones web que funcionan como las aplicaciones tradicionales de escritorio, rompiendo así la brecha tradicional abierta entre ambos tipos de aplicación.
En la medida en que toda nueva tecnología o combinación creativa de tecnologías preexistentes abre la puerta a nuevos usos y aplicaciones, se da pie también a un mal uso y abuso de las mismas. La introducción de Ajax en los sitios web permite una experiencia de usuario mejorada, pero también dificulta la labor de asegurar la aplicación frente a ataques. No es que Ajax introduzca de por sí nuevos agujeros de seguridad, sino más bien que amplifica y camufla los ya existentes y dificulta su detección. Del mismo modo que los desarrolladores han encontrado nuevas formas imaginativas de usar Ajax, igualmente los hackers se están sirviendo de Ajax en formas novedosas, como por ejemplo en la creación de los gusanos más rápidos de la historia de la informática (v. recuadro Gusanos 2.0).
En este artículo se repasan algunos conceptos básicos de Ajax, se exploran los retos para la seguridad que su uso plantea y se ofrecen directrices para su uso seguro en aplicaciones web.

Web 2.0
Ajax suele considerarse como uno de los pilares de la Web 2.0. Nuevamente, se trata de un término controvertido que para unos no supone sino otra palabra de moda o marketing, sin base sólida que la sustente, mientras que para otros representa la evolución lógica de la Web experimentada en los últimos años, especialmente después de la crisis de las punto com de principios de la década. El término fue acuñado en una sesión de brainstorming realizada entre O’Reilly y MediaLive en 2004. Desde entonces ha ido calando más y más hasta convertirse en la insignia de muchos sitios web que presumen de modernos, novedosos o diferentes.
Pero, ¿qué se entiende por la Web 2.0, más allá de bonitos diseños CSS con colores pastel? Ciertamente, se trata de un concepto de fronteras difusas, sin definición precisa. Durante otra conferencia posterior de O’Reilly se diseñó un mapa meme de la Web 2.0, mostrado en la Figura 1. En él se ponen de manifiesto algunas de las características clave de lo que hoy en día se está aceptando como Web 2.0: el reconocimiento de la sabiduría de los usuarios y la confianza radical en ellos, quienes contribuyen con su conocimiento, como en el caso emblemático de la Wikipedia (es.wikipedia.org), una enciclopedia escrita colaborativamente por sus propios lectores; el uso de etiquetas añadidas por los usuarios (folksonomy) para identificar el contenido en lugar de basarse en taxonomías, sobresaliendo ejemplos tan populares como del.icio.us o flickr (www.flickr.com); experiencias de usuario ricas, para las cuales Ajax desempeña un papel fundamental, siendo la herramienta clave para posibilitarlas; el usuario como contribuidor con sus opiniones sobre productos, como en eBay (www.ebay.com) o Amazon (www.amazon.com), de manera que cuantos más usuarios participan en el sitio, mayor valor adquiere; la participación de los usuarios en la creación de información y en la referenciación de información mediante hiperenlaces, frente a la publicación unidireccional de contenidos, destacando el papel de los blogs; descentralización radical de los contenidos, que no se sirven desde un servidor central, sino que se distribuyen entre los propios usuarios, como el caso de los polémicos programas P2P, entre los que descollan eMule y BitTorrent.
En lo que todo el mundo parece coincidir es en que Ajax constituye una pieza clave del desarrollo de la Web 2.0. Este reconocimiento implica que en el futuro próximo se popularizará el uso de Ajax. En consecuencia, se multiplicará el número de libros, guías y tutoriales y crecerá el número de desarrolladores en Ajax. La mayoría de estos desarrolladores carecerán de una formación sólida en seguridad web, por lo que la posibilidad de crear aplicaciones Ajax vulnerables crecerá en consonancia.

Ajax
El término Ajax fue a su vez acuñado por Jesse James Garrett, presidente y miembro fundador de Adaptive Path, en febrero de 2005 y significa Asynchronous JavaScript + XML. En palabras del propio Garret:
“Ajax no es una tecnología. Es realmente muchas tecnologías, cada una floreciendo por su propio mérito, uniéndose en poderosas nuevas formas. Ajax incorpora: presentación basada en estándares usando XHTML y CSS; exhibición e interacción dinámicas usando el Document Object Model (DOM); intercambio y manipulación de datos usando XML y XSLT; recuperación de datos asincrónica usando el objeto XMLHttpRequest; y JavaScript aglutinándolo todo.”
De la definición original de Garret emerge claramente una tecnología clave: el lenguaje de programación Javascript, gracias al cual se puede utilizar eficientemente el objeto XMLHttpRequest (XHR). Gracias a Ajax, JavaScript ha vuelto a recobrar importancia. En los últimos años su uso se limitó prácticamente a la validación de formularios y creación de algunos efectos visuales, como los menús desplegables. Sin embargo, combinado con el objeto XHR, JavaScript puede crear aplicaciones interactivas que sorprenden cuando se comparan con las aplicaciones web tradicionales. Los ejemplos más citados de aplicaciones abanderadas del uso de Ajax son algunas de las desarrolladas por Google, como Google Suggest (www.google.com/webhp?complete=1&hl=en), Google Maps (maps.google.com) o Gmail (www.gmail.com); o por Amazon, como su buscador general A9 (www.a9.com) o su buscador de diamantes (www.amazon.com/gp/gsl/search). Ajax permite aplicaciones web con la riqueza interactiva de aplicaciones de escritorio.
La magia de Ajax se consigue gracias al objeto XHR, por cierto nada reciente, pues ya fue incorporado a Internet Explorer 5 en 1999 como el control ActiveX Microsoft.XMLHTTP. Este objeto es el que permite interactuar asíncronamente con la aplicación, de manera que &#

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información