Há três tipos de ataques XSS: refletido (Reflected), armazenado (persistido, Stored) e baseado no DOM (DOM Injection).
-> O refletido caracteriza-se por receber os dados não seguros de um usuário e retorná-los diretamente para o browser.
-> O XSS armazenado é quando os dados não seguros são armazenados em algum meio para que posteriormente seja recuperado.
-> O baseado no DOM atua manipulando ou criando código client-side na página. O ataque pode utilizar apenas uma técnica ou uma combinação das três.
____________________________________________________________________________________________________________
A principal diferença entre o XSS baseado no DOM e os outros dois modos (refletido e armazenado) é que o XSS refletido e armazenado é um problema que deve ser tratado do lado do servidor enquanto o XSS baseado no DOM é um problema que deve ser tratado no lado do cliente.
No XSS armazenado o prejuízo pode ser aumentado pelo simples fato de que o ataque se repetirá automaticamente toda vez que a informação armazenada fora recuperada e exibida no browser.
FONTE: http://devfuria.com.br/seguranca-da-informacao/owasp-topten-2010/a02-cross-site-scripting/