A vulnerabilidade: XSS

O Cross-Site Scripting (também conhecido como XSS), segundo a OWASP, é a 7ª vulnerabilidade que mais ocorre em aplicações web nos dias de hoje. É uma vulnerabilidade que consiste, basicamente, em ativar scripts maliciosos por meio de entradas em uma aplicação web.

Exemplo 1

No exemplo acima, quando o comentário for exibido, o browser entenderá que o seu conteúdo é um script JS, e tentará executá-lo, em vez de apenas exibir o texto digitado. Dessa maneira, quando qualquer usuário abrir a página que exibe os comentários, o script será executado, resultando em algo semelhante ao exibido abaixo.

Exemplo 2

Apesar de parecer algo simples, ainda hoje existem sites que sofrem com essa vulnerabilidade. Um exemplo recente ocorreu no site do Supremo Tribunal Federal, quando um hacker brasileiro conseguiu rodar Minecraft diretamente nos servidores do site, após mais de um ano sem que a falha fosse corrigida (a matéria completa pode ser encontrada aqui). Para não sofrer esse mesmo tipo de ataque, a exibição de dados de um usuário deve ser sempre sanitizada, para que o browser entenda que o conteúdo a ser exibido é apenas um texto, e não algo a ser executado por ele. Nesse site, a proteção contra o XSS foi realizada da seguinte maneira:

Exemplo 3

No PHP, a função htmlspecialchars() faz com que as tags HTML de uma string sejam tratadas como texto pelo navegador. O resultado, utilizando essa função, agora é esse:

Exemplo 4