28 abr 2014

Seguridad en AJAX (Parte III)

En el artículo anterior hablamos de los detalles sobre componentes y seguridad en AJAX, hoy nos toca avanzar y finalizar la serie. Avanzaremos en XPATH y XML Injection. Los XPATH inyectados en SOAP son una amenaza y es una acción similar a una inyección SQL. El lenguaje utilizado es XPATH y el objetivo del ataque son los documentos XML.

Algo que hay que tener muy en cuenta son las validaciones de cliente y no realizadas en la parte del servidor. Este hecho es quizá una de las mayores amenazas a las que se enfrenta AJAX y cualquier tecnología que se encuentre en el lado del cliente. Toda petición debe ser validada en el lado del servidor, independientemente de si se hace una validación en el cliente.

¿Cómo solucionamos?

Se propone el siguiente listado:
  • El código de Javascript se debe ejecutar mediante el uso de una sandbox, con lo que todo lo malicioso que se intente ejecutar queda aislado y sin acceso a los recursos de interés de la máquina atacada. 
  • No establecer conexiones con sitios diferentes del nombre de dominio del que se ha obtenido el script de Javascript. De este modo se puede proteger de problemas de seguridad y esta medida se denomina CORS, Cross-Origin Resource Sharing.
  • Los ficheros Javascript que se han obtenido desde un sitio en concreto no deben poder accder a propiedades de otro sitio. 
  • Validación de todos los campos de entrada y comprobación siempre en el lado del servidor, de otra manera cualquier acción que se valide en el cliente puede ser manipulada, por ejemplo mediante el uso de un proxy. 
  • Implantar controles de seguridad como pueden ser autenticación, autorización, e incluso registro de operaciones o logging, siempre en el lado del servidor. 
  • Utilizar métodos POST en vez de métodos GET. 
  • Se debe tener en cuenta los ataques clásicos como SQLi y XSS por lo que buscarlos especialmente y XSRF, los cuales podrán ser solventados mediante un filtrado correcto o utilización de tokens correctamente en el caso del XSRF. 
  • No almacenar jamás datos sensibles o confidenciales en el lado del cliente, este hecho haría que obtenerlos por un atacante fuera algo potencialmente sencillo. 
  • Utilización de métodos criptográficos para transmitir datos sensibles o confidenciales entre el cliente y el servidor. 
  • La lógica de negocio debe tener el principio de mínima exposición y encontrarse siempre en el lado del servidor. 
  • Toda petición realizada con AJAX y que acceda a recursos protegidos deberán encontrarse autenticadas.
Se puede entender fácilmente que las tecnologías estudiadas en este trabajo, englobadas en la web 2.0 pueden sufrir ataques tal y como ocurría en la web 1.0. La auditoría y el S-SDLC es algo totalmente necesario para minimizar la ocurrencia de las posibles amenazas que se han tratado en el presente documento.

======================================================
- Seguridad en AJAX (Parte I)
- Seguridad en AJAX (Parte II)
- Seguridad en AJAX (Parte III)
======================================================

1 comentario:

  1. Gracias por su información, bastante enriquecedora, gracias por compartir .

    ResponderEliminar