Por que o <script> não é executado? (Entidades HTML e defesa XSS)
Se você digitar <script>alert('hacked');</script> em uma caixa de comentários em um site, o que acontece?
Na maioria dos sites seguros, o script não é executado; em vez disso, a string de texto é exibida exatamente como digitada.
Os navegadores normalmente interpretam < como o início de uma tag. Então, como eles sabem exibi-lo como texto em vez de executá-lo como código?
O segredo está nas Entidades HTML.
1. O Dilema dos Caracteres Reservados
Em HTML, caracteres como <, >, & e " têm significados especiais. Estes são chamados de Caracteres Reservados.
Se você quiser escrever a equação "3 < 5" em seu conteúdo e digitá-la como está, o navegador pode ficar confuso, tentando interpretar o que segue < como uma tag.
Portanto, precisamos de um código especial para representar esses caracteres reservados "literalmente".
2. Entidades HTML Comuns
As Entidades HTML começam com & e terminam com ;.
<(Menor que) -><>(Maior que) ->>&(E comercial) ->&"(Aspas duplas) ->"'(Aspas simples) ->'(ou')- Espaço ->
(Espaço inquebrável)
Quando você vê < na tela, o código-fonte HTML real é provavelmente <.
3. Defesa contra XSS (Cross Site Scripting)
As Entidades HTML são cruciais para a segurança.
XSS é um ataque onde um hacker injeta scripts maliciosos em um site para roubar cookies de usuário ou realizar ações prejudiciais.
No entanto, se o servidor converter (escapar) < para < e > para > ao salvar ou exibir a entrada do usuário, o que acontece?
O navegador vê <script> e decide: "Isso é apenas texto, não uma tag", e o renderiza como texto sem executar o script. Esta é a defesa mais fundamental e poderosa contra XSS.
Conclusão
Frameworks frontend modernos como React ou Vue escapam automaticamente os dados por padrão ao renderizar.
No entanto, ao usar recursos como dangerouslySetInnerHTML, essa defesa automática é desativada. Nesses casos, você deve garantir que a conversão de entidade HTML tenha sido aplicada.
Uma simples conversão de caracteres atua como um escudo protegendo seu site de hackers.
Explore ferramentas relacionadas
Experimente estas ferramentas gratuitas do Pockit