No artigo anterior, aprendemos sobre erros de XSS (Cross Site Scripting) e a exploração real do XSS Reflected. Existe outro tipo de XSS considerado mais perigoso: XSS armazenado.
Ao contrário do Reflected, que ataca diretamente algumas vítimas visadas por hackers, o Stored XSS tem como alvo mais vítimas. Este erro ocorre quando a aplicação web não verifica minuciosamente os dados de entrada antes de salvá-los no banco de dados (aqui utilizo este conceito para me referir ao banco de dados, arquivo ou outras áreas que armazenam dados da aplicação web).
Com a técnica Stored XSS, os hackers não a exploram diretamente, mas devem fazê-lo em pelo menos 2 etapas.
Primeiro, os hackers usam pontos de entrada não filtrados (formulário, entrada, área de texto...) para inserir códigos perigosos no banco de dados.

A seguir, quando o usuário acessar a aplicação web e realizar operações relacionadas a esses dados salvos, o código do hacker será executado no navegador do usuário.
![Web8: Exploits XSS - Parte 2: XSS armazenado Web8: Exploits XSS - Parte 2: XSS armazenado]()
Neste ponto, o hacker parece ter alcançado seu objetivo. Por esse motivo, a técnica Stored XSS também é chamada de XSS de segunda ordem.
O cenário de exploração é descrito a seguir:
![Web8: Exploits XSS - Parte 2: XSS armazenado Web8: Exploits XSS - Parte 2: XSS armazenado]()
O XSS refletido e o XSS armazenado têm duas diferenças principais no processo de ataque.
- Primeiro, para explorar o Reflected XSS, o hacker deve enganar a vítima para que acesse sua URL. Quanto ao Stored XSS, não há necessidade de fazer isso, após inserir o código perigoso no banco de dados do aplicativo, basta o hacker esperar que a vítima o acesse automaticamente. Para as vítimas, isso é completamente normal porque elas não sabem que os dados que acessam foram infectados.
- Em segundo lugar, o objetivo do hacker será mais fácil de alcançar se no momento do ataque a vítima ainda estiver na sessão da aplicação web. Com o Reflected XSS, um hacker pode convencer ou enganar a vítima para que faça login e acesse a URL fornecida por ele para executar código malicioso. Mas o XSS armazenado é diferente, porque o código malicioso foi armazenado no banco de dados da Web, portanto, sempre que o usuário acessar funções relacionadas, o código malicioso será executado e, muito provavelmente, essas funções exigirão autenticação. Faça login primeiro, então obviamente durante esse período o usuário ainda está na sessão.
A partir dessas coisas, pode-se ver que o XSS armazenado é muito mais perigoso do que o XSS refletido; os sujeitos afetados podem ser todos os usuários desse aplicativo da web. E se a vítima exercer uma função administrativa, também existe o risco de sequestro de web.