Antes de comenzar
Este tutorial es para desarrolladores jQuery Mobile interesados en asegurar sus aplicaciones. Se asume que el lector tiene conocimientos básicos relacionados al desarrollo de aplicaciones Web usando PHP, MySQL, JavaScript, XHTML y CSS. Además, este tutorial en ninguna forma es integral; tiene por objeto ser una introducción a la seguridad de aplicaciones Web. Para lecturas adicionales sobre los asuntos tratados aquí, para más otros temas relevantes, consulte los Recursos.
Con el surgimiento de los teléfonos inteligentes y de dispositivos similares, la seguridad de aplicaciones Web se ha ampliado para incluir más aplicaciones móviles. Debido a las limitaciones impuestas por las interfaces de muchos de estos dispositivos, algunas veces los desarrolladores trabajan bajo la errada suposición de que la validación de entradas del lado del cliente es suficiente protección contra los ataques. Sin embargo, las solicitudes enviadas por aplicaciones móviles necesitan ser manipuladas de la misma forma que las aplicaciones Web tradicionales. Debido a esta vulnerabilidad, no se puede confiar en el cliente. Con datos sensibles almacenados algunas veces en sus dispositivos y en los servidores que utilizan, la protección de los usuarios frente a ataques de piratas informáticos es crítica. Este tutorial muestra cómo se presentan diferentes tipos de vulnerabilidades y algunas de las contra-medidas que se pueden poner en práctica para mitigar a los atacantes que tratan de explotarlas. Se tratan los siguientes tipos de vulnerabilidades:
- Cross-site scripting
- Cross-site request forgery
- Violación de control de acceso
- Inyección de SQL
- Inclusión de archivos
- Inyección de comandos de OS
- Inyección de lenguaje de scripting
- Creación arbitraria de archivos
Todas las vulnerabilidades y contra-medidas se demuestran usando una aplicación de muestra compilada con jQuery Mobile, PHP y MySQL. (Vea Descargas donde hay un archivo .zip con el código de muestra).
Necesitará las siguientes herramientas para completar este tutorial:
- Servidor Web — Puede utilizar cualquier servidor Web con soporte PHP. Muchas de las vulnerabilidades explotadas a lo largo de este tutorial son específicas de Windows, pero se pueden adaptar para otros sistemas operativos. Los servidores Web sugeridos son Apache o el IBM HTTPServer.
- PHP — Como algunos de los ataques sugeridos no funcionan contra la última versión, se utilizó el PHP 5.3.1. Dichas incompatibilidades de señalarán durante el tutorial.
- MySQL — Este tutorial usa MySQL, una base de datos de fuente abierta. Para este tutorial se utilizó la versión 5.1.41, pero otras versiones también deben funcionar.
- Proxy para depuración Web — Como se necesita alguna forma para manipular solicitudes HTTP, un proxy de depuración es bastante útil. A lo largo de este tutorial se utilizará Fiddler v2.3.2.4, pero cualquier otro proxy de depuración Web que permita la modificación de solicitudes funcionará.
- jQuery Mobile — El primer plano de la aplicación de muestra construido en este tutorial utiliza jQuery Mobile 1.0 Alpha 3.
Consulte Recursos donde hallará enlaces útiles.