Está en la página 1de 8

Asignatura Datos del alumno Fecha

Seguridad en sistemas, Apellidos: Cano Bejar


16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

Seguridad en aplicaciones Ajax

ARQUITECTURA AJAX
AJAX, Asynchronous JavaScript And XML, es una técnica en desarrollo en la que se
combinan diferentes tecnologías, con el objetivo de diseñar aplicaciones web más
agiles, rápidas e intuitivas para el usuario final, RIA (Rich Internet Application):
• Interfaces intuitivos
• Sistemas sencillos
• Comunicación de cambios al usuario
El objetivo es crear una comunicación asíncrona que actualice tan solo la parte de la
pagina que es necesario cada vez y no por completo.
Entre las tecnologías que mas destacan en el uso de AJAX tenemos:
✓ XHTML y CSS (Cascading Style Sheets) para presentaciones.
✓ Document Object Model (DOM) para datos dinámicos,
✓ XML y XSLT( Extensible Stylesheet Language Transformations) para
intercambio de datos.
✓ Microsoft’s XMLHttpRequest para transmisiones asíncronas cliente/servidor.
✓ JavaScript para ejecutar comandos en la máquina del cliente.
© Universidad Internacional de La Rioja (UNIR)

Actividades 1
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

POLITICA DEL MISMO ORIGEN (SOP)


El Same Origin Policy es una política de seguridad de aplicaciones web implementada
por los navegadores, que previene/restringe la interacción con recursos de otro
origen. Entendiéndose por esta interacción, que se obtenga o establezca propiedades
de un recurso de origen diferente.

Como el origen se entiende la combinación de Protocolo + Host + Puerto


✓ Https://localhost:8080

Lo que hace esta política es que bloquea el acceso a recursos con otros orígenes, por
lo que la regla principal es que un documento puede acceder, por javascript. a otro
documente si ambos tienen el mismo origen.

El navegador siempre va a enviar la petición, pero en la respuesta si el origen no es el


mismo su lectura es bloqueada, sin que pueda llegar a mostrarse, provocando una
excepción. SOP solo se aplica si la petición es realizada por el cliente no por el servidor.

Existen algunas excepciones, alguna de ellas seria:

✓ CSS: Se puede traer un archivo CSS de otro origen usando el elemento <link>
o importando directamente en un archivo CSS.
✓ Images: Incrustar imágenes de otros orígenes está totalmente permitido,
salvo en el uso de canvas.
✓ Scripts: También se permite cargar archivos Javascript de otros orígenes.
Salvo el hacer una petición HTTP mediante fetch() o XMLHttpRequest() a
otro origen. Se seguirán bloqueando este tipo de cosas.
✓ Forms: Se pueden usar URLs de otro origen en el atributo action de un form.
✓ Multimedia : Al igual que las imágenes, cualquier contenido ya sea video o
© Universidad Internacional de La Rioja (UNIR)

audio puede ser traídos con sus respectivos elementos, <audio> y <video>.

Actividades 2
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

VULNERABILIDADES:
JSONi XMLi
JSONi es una vulnerabilidad que permite que un usuario malintencionado inyecte
datos maliciosos en flujos JSON o use flujos JSON maliciosos para modificar el
comportamiento de la aplicación. Hay dos tipos de inyecciones JSON, del lado del
servidor y del lado del cliente:
✓ La inyección JSON del lado del servidor ocurre cuando el servidor no valida
los datos y se escriben directamente en una respuesta JSON.
✓ La inyección JSON del lado del cliente ocurre cuando se envían datos de una
fuente JSON que no es de confianza o se validan mediante la función de eval()
de JavaScript.

XMLi es una vulnerabilidad que surge cuando la entrada del usuario se inserta en un
documento XML del lado del servidor de forma no segura.

Algunas aplicaciones utilizan el formato XML para transmitir datos entre el


navegador y el servidor. Las aplicaciones que hacen esto casi siempre usan una API
de plataforma o biblioteca estándar para procesar los datos XML en el servidor. Las
vulnerabilidades surgen porque la especificación XML contiene varias funciones
potencialmente peligrosas, y los analizadores estándar admiten estas funciones
incluso si la aplicación no las usa normalmente.

Este tipo de vulnerabilidad puede ser difícil de detectar y explotar de forma remota,
debe revisar la respuesta de la aplicación y el propósito que cumple la entrada
relevante dentro de la funcionalidad de la aplicación, para determinar si es realmente
vulnerable.

XSS DOM
© Universidad Internacional de La Rioja (UNIR)

XSS se puede usar en AJAX para manipular los datos del usuario si las aplicaciones
web se implementan sin validar los flujos de datos de entrada y salida que maneja la
aplicación web. XSS se puede usar fácilmente para secuestrar sesiones o identidades
de usuarios.

Actividades 3
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

Todas las formas de XSS, como XSS almacenado, reflejado y basado en DOM, también
se pueden explotar en aplicaciones web basadas en AJAX. Los desarrolladores deben
asegurarse de codificar los datos antes de presentarlos para proteger la aplicación de
posibles ataques.

JSONP
Jsonp es una forma de conseguir algo parecido a ajax cross-domain. Ajax, por motivos
de seguridad nunca ha incluido la posibilidad de lanzar peticiones fuera del dominio
cargado lo cual lo invalida como tecnología para usar servicios web de terceros.

Con jsonp esto es posible puesto que lo que hacemos realmente no es una llamada
ajax sino una carga de un script js completo que lo que hace es lanzar una función que
definimos en la llamada y que actúa como callback.

Jquery contiene entre sus funciones Ajax desde hace tiempo la opción usar jsonp
como forma de cargar contenido. El problema, por el cual esto pasa desapercibido, es
que se incluye en su funcion getJSON y al no ser exactamente lo mismo un json que
un jsonp esto lleva a confusiones.

Para hacer una llamada jsonp usando jquery tenemos que usar la función getJSON
indicando al final la variable que va a definir el nombre de la función a ejecutar como
callback con un "?". Si hacemos esto el resto de opciones las manejamos como en una
llamada ajax de jquery cualquiera.

Esto hace realmente sencillo el manejo de ajax cross-domain con jsonp ya que ni
© Universidad Internacional de La Rioja (UNIR)

siquiera tenemos que ponerle nombre a la función de callback y podemos definirla en


el mismo momento de la llamada.

Actividades 4
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

JAVASCRIPT HIJACKING / CSRF


Consiste en suplantar la identidad de usuario autentificado para extraer información
de sesiones o cookies, y realizar acciones validas en diferentes páginas. Es lo que se
conoce como secuestro de javascript que agrega código JS para la extracción de
datos.
CSRF consiste en enviar enlaces con los parámetros adecuados para que al clicar en
ellos se ejecute la petición como si la estuviera haciendo el usuario.

AJAX BRIDGING
Como su propio nombre indica es un puente entre peticiones script, donde desde la
salida del cliente al destino se intercepta la petición, y haciendo uso de las
credenciales del primero se pueden realizar otras peticiones al destino.

Uso de la función eval()


El uso de la función eval() en javascript permite al atacante inyectar código en dicha
función que será directamente ejecutado, ya que esta función interpreta su
contenido y lo ejecuta.

DEFENSAS
CORS
CORS (Cross-Origin Resource Sharing) es un mecanismo o política de seguridad que
permite controlar las peticiones HTTP asíncronas que se pueden realizar desde un
navegador a un servidor con un dominio diferente de la página cargada originalmente
© Universidad Internacional de La Rioja (UNIR)

(SOP) Este tipo de peticiones se llaman peticiones de origen cruzado.

Actividades 5
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

DEFENSAS ANTI CSRF y JAVASCRIP HIJACKING


Las defensas Anti CSRF Tokens básicamente generan un token diferente por cada
petición, por lo que hace imposible a un intermediario adivinar el token de seguridad
ya que necesitaría las credenciales del usuario genérico.
Para evitar Javasscript Hijacking, las aplicaciones RIA deben controlar no ejecutar con
JS en la respuesta de las peticiones al servidor.

¿Cómo validar datos? para evitar XSS DOM, SQLI...


Para evitar los ataques XSS la regla básica es codificar correctamente cualquier dato
que se emita como resultado. En el caso de una aplicación web codificar
correctamente el dato a emitir depende del contexto donde se incluya el dato para
escapar correctamente los caracteres especiales de ese contexto. Los contextos puede
ser como HTML, como un atributo de una etiqueta, como contenido HTML, como un
bloque de JavaScript o como una variable de JavaScript.

Si el framework web que usamos no proporciona facilidades para evitar ataques XSS
al emitir contenido en el resultado en Java se puede usar la librería OWASP Java
Encoder Project siendo su uso el siguiente. OWASP Java Encoder Project es una
librería que no tiene dependencias adicionales por lo que es sencillo incorporarla en
la aplicación.

Controles de seguridad, Autenticación, TLS...


El principal beneficio de la seguridad de la capa de transporte es la protección de los
datos de la aplicación web de la divulgación y modificación no autorizada cuando se
transmite entre clientes (navegadores web) y el servidor de aplicaciones web y entre
el servidor de aplicaciones web y otros servidores o componentes empresariales.
© Universidad Internacional de La Rioja (UNIR)

El componente de validación de servidor de TLS proporciona autenticación del


servidor al cliente. Si está configurado para requerir certificados del lado del cliente,
TLS también puede desempeñar un papel en la autenticación del cliente en el servidor.

Actividades 6
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

Se deben agregar controles de seguridad adecuados para proteger los datos mientras
están en reposo dentro de la aplicación o dentro de los almacenes de datos.

✓ Debemos utilizar TLS, ya que SSL no se considera aconsejable para la


seguridad.
✓ Todas las páginas deben ser servidas a través de HTTPS. Esto incluye css,
scripts, imágenes, solicitudes AJAX, datos POST y terceros. De no hacerlo crea
un vector para los ataques man in the middle.
✓ Sólo proteger las páginas autenticadas con HTTPS, no es suficiente. Una vez
que hay una solicitud en HTTP, los ataques man in the middle son posibles,
pudiendo evitarlo haciendo que los usuarios lleguen a las páginas protegidas.
✓ El HTTP Strict Transport Security Header debe ser utilizado y cargado
previamente en los navegadores . Esto indicará a los navegadores
compatibles que sólo utilicen HTTPS, incluso si se solicita el uso de HTTP.
✓ Las cookies deben estar marcadas como seguras

Recomendaciones
Alguna recomendación en el desarrollo de aplicaciones AJAX puede ser:

✓ Realizar verificaciones de autenticación / autorización tanto en las páginas


Web como en los Servicios Web.
✓ Agrupar las bibliotecas de código por función.
✓ Validar todas las entradas de la aplicación, incluidas las cabeceras HTTP,
cookies, cadenas de consulta y datos POST.
✓ Verificar el tipo, la longitud y el formato de los datos.
© Universidad Internacional de La Rioja (UNIR)

✓ Siempre utilizar consultas parametrizadas.


✓ Siempre codificar (encode) apropiadamente la salida.

Actividades 7
Asignatura Datos del alumno Fecha
Seguridad en sistemas, Apellidos: Cano Bejar
16/01/2023
aplicaciones y el big data Nombre: Miguel Angel

Bibliografía

1. AJAX: ¿Qué es y Para que Sirve? [Internet]. SG Buzz. [citado el 16 de enero de


2023]. Disponible en: https://sg.com.mx/content/view/287

2. Www.um.es. [citado el 16 de enero de 2023]. Disponible en:


https://www.um.es/docencia/barzana/DAWEB/2017-18/Apuntes-sobre-ajax-
USAL.pdf

3. Codificar los datos para evitar ataques XSS en una página web [Internet]. Blog
Bitix. 2019 [citado el 16 de enero de 2023]. Disponible en:
https://picodotdev.github.io/blog-bitix/2019/03/codificar-los-datos-para-evitar-
ataques-xss-en-una-pagina-web/

4. Wikipedia contributors. Wikipedia:Portada [Internet]. Wikipedia, The Free


Encyclopedia. Disponible en:
https://es.wikipedia.org/w/index.php?title=Wikipedia:Portada&oldid=123425818

5. JSON injection [Internet]. Invicti. 2022 [citado el 16 de enero de 2023].


Disponible en: https://www.invicti.com/learn/json-injection/

6. Ramiro R. Buenas prácticas TLS / SSL [Internet]. CIBERSEGURIDAD .blog.


2017 [citado el 16 de enero de 2023]. Disponible en:
https://ciberseguridad.blog/buenas-practicas-tls-ssl/
© Universidad Internacional de La Rioja (UNIR)

Actividades 8

También podría gustarte