De esas categorizaciones :
El cliente XSS se produce cuando se usan datos no confiables proporcionados por el usuario para actualizar
el DOM con una llamada de JavaScript no segura.
(en la mía)
Por lo tanto, para que sea cliente XSS, tiene que implicar actualizar el DOM.
Aunque, el artículo continúa diciendo:
DOM Based XSS es simplemente un subconjunto de Client XSS
Creo que esto se refiere a que la fuente real proviene del DOM en lugar del servidor.
por ejemplo
foo.innerHTML = document.location.hash;
En lugar de
foo.innerHTML = ajaxResult;
Esto se debe a que la definición de XSS basada en DOM es la siguiente:
DOM basado en XSS es una forma de XSS donde toda la información contaminada
el flujo desde la fuente hasta el sumidero tiene lugar en el navegador, es decir, la fuente
de los datos está en el DOM, el sumidero también está en el DOM, y los datos
El flujo nunca abandona el navegador.
Por lo tanto, el XSS basado en el cliente reflejado que no se basa en DOM es donde los datos en sí mismos son del servidor (reflejados en la respuesta de la solicitud HTTP), pero el código se representa en la página a través de JavaScript.
Ejemplo:
Solicitud:
http://example.com?name=<svg onload=alert(1) />
(El nombre estaría% codificado, pero lo he dejado sin codificar aquí para mayor claridad)
Respuesta:
<script>
var name = "<svg onload=alert(1) />";
$('#output').html(name);
</script>
<div id="output">
</div>
Para llevar
Lo que es probablemente importante cuando se trata de XSS es lo siguiente:
- Cualquier tipo de XSS almacenado es mayormente mayor riesgo que cualquier forma de XSS reflejado. Los filtros XSS del navegador no pueden detenerlos (excepto si hay una Política de seguridad de contenido vigente y está suficientemente bloqueada).
- Cuando un XSS actualiza el DOM en un ataque XSS reflejado, esto también evita los filtros XSS del navegador (las mismas advertencias con respecto al CSP).
- El servidor XSS reflejado es menos riesgoso, ya que requiere la interacción del usuario y también es muy probable que un filtro XSS del navegador lo bloquee.