Cross-site Scripting (XSS) es cuando un atacante introduce un código malicioso que puede ser interpretado desde el navegador -conocido como el lado del cliente- con el fin de alterar la página web. Es posible modificar la página web en HTML –Hypertext Markup Language- al introducir un JavaScript; este tipo de lenguaje de programación es ejecutado desde el lado del cliente brindando una facilidad de uso del usuario. XSS usualmente es introducido en algún tipo de formulario que el usuario pueda introducir datos; sin embargo, no existe una validación correcta en estos formularios.
Un ciberdelincuente intenta identificar lugares que aceptan datos del usuario sin una validación correcta. La manera de cómo ellos identifican dónde no existe estas validaciones es a través de pruebas de etiquetas HTML. Una vez que logran inyectar una etiqueta proceden a inyectar el código malicioso como JavaScript. También, dependiendo de cómo la aplicación procesa estos datos, y si estos datos interactúan con una base de datos, puede convertirse en una inyección SQL -introducir consultas de bases de datos- donde el atacante puede interactuar con la base de datos. Una vez que estamos en este punto de la posibilidad de interactuar con el servidor es posible modificar, agregar y eliminar datos.
Ahora entendemos el riesgo que representa un XSS en una aplicación; de la posibilidad de saltar de introducir código malicioso como JavaScript a inyectar consultas de base de datos. Es por esto por lo que siempre debemos de validar los datos del usuario desde el lado del cliente y también del servidor. Existen técnicas de cómo evadir los controles de validación del lado del cliente, por lo que debemos siempre realizar las validaciones del lado del servidor. Al final, estos tipos de ataques pueden ser identificados en auditorías de aplicaciones web o móvil; es por esto que es de suma importancia realizar estas pruebas.