Imaginemos o site "xpto" que numa tentativa de se proteger contra ataques XSS filtra alguns inputs dos utilizadores, como por exemplo a função
Fazendo alguns testes nesse site, verificamos que de facto o seguinte input não passa:
alert()
do Javascript.Fazendo alguns testes nesse site, verificamos que de facto o seguinte input não passa:
;alert("owned!");
Mas o seguinte já passa:
;alert"owned";
Este segundo input, do modo que está não faz rigorosamente nada. No entanto com um pequeno ajuste, mais especificamente apontadores de funções, conseguimos injectar a função
alert()
na mesma, ultrapassando o filtro do site:;var xpto=alert;xpto("owned!");
Acontece que o site xpto não é imaginário, e existem muitos como ele por aí. E em vez de se perder tempo a bloquear uma das centenas de maneiras de iniciar um ataque, o ideal seria resolver o problema de raiz.