Actividad Online
Actividad Online
Actividad Online
Frente a esto está llegando con bastante fuerza la tecnología AJAX, la cual es una
mezcla de 4 tecnologías, Java Script, XML, el objeto xmlHttpRequest y el Modelo de
Objetos de Documento (DOM). Es una técnica de desarrollo web para crear
aplicaciones interactivas o RIA (Rich Internet Aplicaciones).
Arquitectura AJAX. Dar al usuario una buena experiencia en el uso de las aplicaciones
web es uno de los puntos que permiten que este retorne a visitarlo. Todos hemos
experimentado las aplicaciones web en las que para cargar un dato necesitamos
esperar a que toda la página se cargue para obtener resultados, imaginarse recargar
toda la página por un dato especifico no es realmente agradable, gracias AJAX podemos
solventar esto.
Para entender mejor este concepto, podemos recordar que, en años anteriores cuando
se hacía una actualización en cualquier parte de la web, se debía esperar a que esta se
actualizara por completo, gracias a esta técnica de desarrollo Ajax, se logra que sea solo
un fragmento en la página web se actualice, al lograr esto surgen las múltiples
aplicaciones y dinamismos en la web, como lo es el caso de validación de cupones,
inicio de sesión, formularios, entre otros.
varios tipos de producto la opción “automóviles”. Como respuesta a ese evento, se envía
la información (opción automóviles) al servidor en segundo plano y se reciben datos de
respuesta del servidor también en segundo plano, sin necesidad de recargar de nuevo
toda la página. Con la información recibida del servidor y usando JavaScript se
modifica la página únicamente allí donde es necesario, de modo que ahora se le
muestran al usuario los tipos de automóviles disponibles, por ejemplo autobuses,
furgonetas y coches (2). Ahora el usuario elige un tipo de automóvil, por ejemplo
coches, y como respuesta a ese evento, se envía la información al servidor en segundo
plano y se reciben datos de respuesta del servidor también en segundo plano, sin
necesidad de recargar de nuevo toda la página. Con la información recibida del servidor
y usando JavaScript se modifica la página únicamente allí donde es necesario, de modo
que ahora se le muestran al usuario los tipos de coches disponibles, por ejemplo “de
gasolina”, “diesel”, “eléctricos” e “híbridos” (3). Ahora el usuario elige una opción, por
ejemplo “eléctricos”, y como respuesta a ese evento, se envía la información al servidor
en segundo plano y se reciben datos de respuesta del servidor también en segundo
plano, sin necesidad de recargar de nuevo toda la página. Con la información recibida
del servidor y usando JavaScript se modifica la página únicamente allí donde es
necesario, de modo que ahora se le muestran al usuario para mostrarle los tipos de
coches eléctricos disponibles (4). En total hemos realizado 1 cargas completa de la
El uso de Ajax introduce una ventaja clara, de ahí que la mayor parte de las webs hoy
día usen Ajax.
Ejemplo de su funcionamiento.
Tecnologías AJAX
XHTML se utiliza para marcar contenido como texto, imágenes y enlaces en forma
de hipervínculos para crear una cierta estructura que puede ser mostrada por
los navegadores. Los documentos pueden ser estructurados con XHTML para hacerlos
legibles para un analizador. El analizador interpreta los elementos de marcado
especificados en las definiciones del lenguaje XHTML y reproduce el contenido de estos
elementos de una manera específica.
Características AJAX.
Mediante el uso de servicios web en jQuery y JSON, los retornos de llamada en Ajax se
han convertido en prácticas de programación estándar para diseñar y desarrollar
aplicaciones web.
El Ajax Control Toolkit es un conjunto de controles creados por Microsoft que está
integrado en Visual Studio y puede ser arrastrado y soltado en formularios web como
html y controles de servidor. Estos controles están destinados a ser utilizados para
retorno de llamadas en Ajax. Sin embargo, también pueden utilizarse como controles
normales en la parte de cliente y servidor. Por ejemplo, Asp.Net no viene con los
controles Tabs. Sin embargo, el Ajax Control Toolkit lo hace. El control Tab puede
postback al servidor como controles de servidor.
maliciosa puede aprovechar para, por ejemplo, hacerse con cookies de autentificación .
Ataques Lógicos contra Ajax. Los ataques lógicos aprovechan la naturaleza de lado
del cliente de las aplicaciones AJAX. Ajax y la web 2.0 son una gran cosa para los
ataques lógicos. Esto a razón de la lógica del negocio es enviada y ejecutada sobre el
lado del cliente. Un ejemplo clásico de ataque lógico es el referente al proceso seguido
por un carrito de compras. El proceso está constituido de cuatro fases: añadir artículo
al carrito, costo total, autorizar tarjeta y pagar. Debido a la aplicación almacenada el
estado de cada paso, el profesional en pruebas de penetración podría llamar a la
autorización de la tarjeta antes de añadir el artículo. Esto podría causar una
autorización para un balance en cero. Luego cuando los artículos sean añadidos, el pago
podría ser llamado a continuación. La aplicación podría asumir, la autorización fue
hecha antes de añadir los artículos y permitiría pagar.
realizar pruebas lógicas, están diseñadas para ejercitar funcionalidad y encontrar fallas
existentes dentro de la funcionalidad. Para encontrar fallas lógicas, la herramienta
podría necesitar ser capaz de evaluar el éxito del ataque. Por ejemplo; en la falla en el
carrito de compras previamente mencionado; la herramienta podría necesitar entender
está evaluando un carrito de compras y podría también necesitar ser capaz de figurarse
donde detectar lo exitoso de la transacción.
Hay que tener en cuenta el aumento de la superficie de ataque, es decir, la parte que se
ejecuta o desarrolla en la parte del cliente, y esto hace que la exposición o superficie de
ataque sea mayor. La revelación de la lógica de la aplicación hace que los posibles
atacantes conozcan parte del código, ya que este reside en la parte del cliente. Esto hace
que el atacante pueda analizar cierta parte de la lógica, y utilizarla para llevar a cabo
acciones maliciosas sobre la lógica de la aplicación.
Vulnerabilidades clásicas como SQLi o XSS, y nuevas posibilidades para el XSS. SQLi
es una de las vulnerabilidades top de OWASP, y sigue siendo una de las principales
amenazas de las nuevas tecnologías. Las nuevas posibilidades para los XSS surgen del
almacenamiento de más datos en la parte del cliente y se pueden obtener cookies,
credenciales y realizar un robo de información en profundidad. Mediante el DOM y un
XSS se puede alterar el contenido de un sitio, modifica la dirección de donde los datos o
formularios de usuarios son enviados, robo de cookies y credenciales, tal y como se
mencionó anteriormente.
A pesar de una serie más potente de las tecnologías, los desarrolladores deben ser
conscientes de los agujeros de seguridad potenciales.
Uno de los retos principales para las aplicaciones de AJAX es que al trasladar el código
al cliente se involucra una gran cantidad de formatos de datos, protocolos, analizadores
e intérpretes. Estos incluyen JavaScript, VBScript, Flash, JSON, XML, REST,
XMLHttpRequest, XSLT, CSS y HTML además de las tecnologías de servidor
involucradas. Además, como si esto no fuera suficiente, cada framework de AJAX tiene
sus propios formatos.
En AJAX cada vez es más difícil saber dónde se ejecutará el código. Tome por ejemplo
las herramientas Web de Google (Google Web Toolkit, GWT). Usted programa en Java
y el entorno toma cierta parte del código y la compila en JavaScript que funciona en el
cliente.
La solución es ser cuidadoso en las actividades que se deben desempeñar del lado del
cliente y del lado del Servidor.
Los hackers frecuentemente utilizan una técnica llamada "inyección" para introducir
comandos en ciertas secciones de datos de modo que logren ejecutarlos. Este truco es el
corazón de muchos ataques como inyección de SQL, comandos, LDAP, XSS y
desbordamientos de memoria.
La clave para detener estos ataques está en nunca ejecutar datos que podrían ejecutar
código. Pero con AJAX, muchos de los datos y código son combinados en DOM. Dado
que actualmente no existe una estructura como HTML que mezcle código y datos.
Así que, sea cuidadoso con los datos que podrían incluir una entrada del usuario. En
este caso procure validar todos los datos antes de ejecutarlos, aún en aquellos datos que
se ejecutan del lado del cliente.
Codificar dificulta las cosas ya que los atacantes pueden esconder sus ataques
codificándolos y así lograr ejecutar sus ataques en las aplicaciones que son vulnerables.
Actualmente se utilizan diferentes esquemas de codificación o una doble codificación
para ocultar sus ataques. Existen docenas de esquemas y no existe una manera de saber
que esquema se debería reconocer para prevenir el ataque. Esto hace que reconocer
este tipo de ataques sea muy complejo si no es que imposible.
Siempre que se envíe o reciban datos, ambas partes deben conocer el tipo de
codificación que se utiliza. De modo que la aplicación no intente adivinar el esquema de
codificación. No es posible prevenir que un atacante envíe datos con otro tipo de
codificación pero la aplicación no tendrá que ejecutarlos. Por ejemplo:
Recuerde, la superficie de ataque de AJAX está bajo su control. Las decisiones que
realice pueden incrementar drásticamente el tamaño de la superficie de ataque.
Asegúrese de dónde se ejecuta el código, qué tipo de formato de datos y protocolos
Hugo Ruiz Martínez
Master en Ingeniería de software y Sistemas Informá ticos Pá gina 13
Actividad. Aplicaciones AJAX. Arquitectura y tecnologías.
Vulnerabilidades de seguridad y defensas
Ejemplo Ajax:
En primer lugar vamos a crear los archivos necesarios y comprobar que todo funcione
correctamente. Sigue las instrucciones que vamos a ir dando a continuación. Crea un
archivo denominado cursoAjaxCU01206F.html con el contenido que indicamos a
continuación. No te preocupes ahora por entender todo el código, lo explicaremos
después:
Archivo html:
Archivo php:
En el código html se ha dejado un div con id listaCiudades que se encuentra vacío (<div
id="listaCiudades"> </div>). En este div es donde tenemos previsto mostrar las
ciudades que recuperemos del servidor en función de la opción elegida por el usuario,
usando Ajax para ello.
Sube el fichero HTML al servidor (en la misma ruta donde tengas el fichero PHP) e
invoca la ruta donde se encuentre, que será del tipo
http://aprenderaprogramar.com/cursoAjaxCU01206F.html.
Ahora debes ser capaz de elegir opciones del combobox desplegable y visualizar
resultados por pantalla. Por ejemplo, si eliges la opción “Argentina”, el resultado
esperado será que por pantalla se visualice:
Conclusiones
2.) Conocimos que AJAX requiere un conocimiento avanzado de todas y cada una de las
tecnologías anteriores. En las aplicaciones web tradicionales, las acciones del usuario
en la página (pinchar en un botón, seleccionar un vínculo).
3.) AJAX no requiere instalación de plugins, applets de Java, ni ningún otro elemento
adicional a instalarse en el cliente.
4.) Reducción de tráfico entre cliente y el servidor. El servidor tiene una mejor carga de
trabajo. Las transacciones se resuelven más rápido.
5.) Por otra parte, existen algunos problemas que afectan a AJAX y deben ser
corregidos para garantiza la continuidad. Dos de los principales se presentan en las
áreas de seguridad y compatibilidad. Sobre el primero cabe mencionar que aunque
cualquier clase de sistema web es propenso a vulnerabilidades en su seguridad, la
complejidad añadida de las aplicaciones AJAX, sobre todo en lo que respecta al código
residente en el lado del cliente, repercute negativamente en su seguridad magnificando
el problema.