XSS almacenado o persistente es un tipo de vulnerabilidad XSS donde el servidor procesa y almacena la información no confiable del usuario en un archivo o base de datos sin ninguna validación y estos datos no confiables se recuperan del almacenamiento y se reflejan en respuesta sin codificación. o el escape que resulta en la ejecución de código permanente en el navegador siempre que los datos almacenados se reflejen en la respuesta.
XSS reflejado o no persistente es un tipo de vulnerabilidad XSS en la que el servidor procesa de inmediato la información no confiable sin ninguna validación y se refleja en la respuesta sin codificación o escape, lo que resulta en la ejecución del código en el navegador.
XSS basado en DOM es una forma de XSS del lado del cliente que se produce en un entorno donde la fuente de los datos está en el DOM, el sumidero también está en el DOM y el flujo de datos nunca abandona el navegador. Ocurre cuando se dan datos no confiables en la fuente como resultado de modificar el "entorno" DOM en el navegador. DOM XSS se produce cuando los datos que no son de confianza no están en forma de escape o codificación con respecto al contexto.
También existe mXSS o Mutation XSS es un tipo de vulnerabilidad XSS que se produce cuando los datos no confiables se procesan en el contexto de la propiedad innerHTML de DOM y el navegador los muta, lo que resulta como un vector XSS válido. En mXSS, los datos especificados por el usuario que parecen inofensivos pueden pasar a través de los filtros XSS del lado del cliente o del servidor, si están presentes o no, y el motor de ejecución del navegador los muta y se refleja como un vector XSS válido.
En pocas palabras, XSS almacenado es la mayor amenaza porque permite robar cookies y comprometer el sitio web (si HTTPOnly no está admitido) sin la interacción de los usuarios.
Reflected o DOM XSS también puede ser muy útil para los atacantes, por ejemplo, realizar ataques de phishing.