X-XSS-Protection era um cabeçalho de segurança que existe desde a versão 4 do Google Chrome. Ele foi projetado para habilitar uma ferramenta que verifica o conteúdo do site para o script cross-site refletido. Todos os principais navegadores retiraram o suporte ao cabeçalho, pois ele acabou introduzindo falhas de segurança. É altamente recomendável que você não defina o cabeçalho e, em vez disso, configure uma forte Política de Segurança de Conteúdo.
Dica: Cross-Site Scripting geralmente é abreviado para a sigla “XSS”.
O script de cross-site refletido é uma classe de vulnerabilidade XSS em que a exploração é codificada diretamente na URL e afeta apenas o usuário que visita a URL. O XSS refletido é um risco quando a página da web exibe dados do URL. Por exemplo, se uma loja na web permite que você pesquise produtos, ela pode ter um URL parecido com “website.com/search?term=gift” e incluir a palavra “presente” na página. O problema começa se alguém coloca JavaScript na URL, se não estiver devidamente limpo, esse JavaScript pode ser executado em vez de impresso na tela como deveria ser. Se um invasor conseguir enganar um usuário para que ele clique em um link com esse tipo de carga útil XSS, ele poderá fazer coisas como assumir o controle de sua sessão.
O X-XSS-Protection foi concebido para detectar e prevenir este tipo de ataque. Infelizmente, com o tempo, vários desvios e até vulnerabilidades foram encontrados no funcionamento do sistema. Essas vulnerabilidades significavam que a implementação do cabeçalho X-XSS-Protection introduziria uma vulnerabilidade de script entre sites em um site de outra forma seguro.
Para se proteger contra isso, com o entendimento de que o cabeçalho da Política de Segurança de Conteúdo, geralmente abreviado para “CSP”, inclui uma funcionalidade para substituí-lo, os desenvolvedores de navegador decidiram retirar o recurso. A maioria dos navegadores, incluindo Chrome, Opera e Edge removeu o suporte ou, no caso do Firefox, nunca o implementou. É recomendado que os sites desabilitem o cabeçalho, para proteger os usuários que ainda usam navegadores legados com o recurso habilitado.
X-XSS-Protection pode ser substituído pela configuração “inseguro-inline” no cabeçalho CSP. Poder habilitar essa configuração pode dar muito trabalho dependendo do site, pois significa que todo o JavaScript deve estar em scripts externos e não pode ser incluído diretamente no HTML.