O que é ?
é o teste quintessencial para cross-site scripting (XSS), porque é rápido de digitar e funciona em todos os navegadores.
Teste para XSS
Se você puder colar isso em uma caixa de texto em um site (como um campo de comentário), e ela surgir uma caixa de alerta na tela de outro usuário, então esse site é vulnerável ao XSS, porque você sabe que pode rodar Javascript como se você fosse aquele outro usuário - roubando credenciais, falsificando sua identidade, roubando dados, fazendo phishing deles ou de outra conta de usuário, ou até mesmo apenas fazendo ricochetear seu ataque através deles para outro alvo. XSS é incrivelmente ruim, e ainda mais fácil de verificar e corrigir do que a injeção SQL; todos devem saber como fazer isso, e é assim que.
Para automatizar testes para XSS (e outras vulnerabilidades) em todo o seu site, existem ferramentas de fuzzing tanto de código aberto quanto comerciais (como o Burp Suite), que, é claro, farão um trabalho muito mais abrangente do que você pode fazer apenas colando ``, mas esse ainda é um ótimo primeiro teste.
Fixar XSS
Fixar XSS pode ser fácil na maioria das linguagens: basta usar uma biblioteca que incorpora as recomendações OWASP para o saneamento HTML antes de armazenar a entrada de dados não confiáveis no banco de dados (você também deve sanitizar para ataques de injeção SQL - estes podem ser ainda mais catastróficos), ou antes de exibir qualquer texto recebido do servidor na tela. Procure na web por proteção contra injeção SQL para sua linguagem de programação. (Muitas vezes a prevenção de injecção SQL será incorporada na sua biblioteca de base de dados.)
OWASP tem um guia de referência para prevenção e teste de XSS aqui.
Teste para o Reflected Cross site scripting (OTG-INPVAL-001)
Não seja dissuadido se isto parecer demasiado desafiador ou demorado; vale absolutamente a pena fazer e normalmente só precisa de uma linha extra ou assim de código. Basta procurar nas bibliotecas web pela sua linguagem ou nome do framework que irá sanitizar os dados do XSS.
Um exemplo rápido usando o pacote XSS para node.js:
// Sanitize seu texto de entrada, não confiável apenas usando xss():
xss = require('xss');
// mais tarde, depois de receber a entrada do usuário
// (não se esqueça da injeção SQL antes de escrever para o DB!)
var clean_string = xss(untrusted_string);
store_it_somewhere(clean_string);
é tudo o que existe.
mas, se você vir no seu banco de dados, então alguém estava testando a sua aplicação para detectar vulnerabilidades! Se não foi você, então você pode querer oferecer uma recompensa por bugs e ver se alguém encontra alguma coisa. :)