PHP htmlspecialchars

Resumo : neste tutorial, você aprenderá como usar a htmlspecialchars()função PHP para prevenir ataques XSS.

O que é XSS?

XSS significa script entre sites. É um tipo de ataque em que um hacker injeta código de cliente malicioso na saída de uma página da web.

Por exemplo, se você tiver uma seção de comentários em sua página que permite que usuários legítimos façam comentários. No entanto, se você mostrar comentários simples, a página ficará vulnerável ao ataque XSS.

Um hacker pode inserir um comentário com código JavaScript que redireciona os usuários para um site malicioso:

<script>location.replace('<malicious website>');</script>Linguagem de código:  PHP  ( php )

O site irá armazenar este comentário no banco de dados e exibi-lo na seção de comentários. Quando usuários legítimos acessam a página, ela os redireciona para um site malicioso.

Para evitar ataques XSS, você deve sempre escapar da string de fontes desconhecidas, como entradas do usuário. Para escapar de uma string para saída, você usa a htmlspecialchars()função.

Introdução à função PHP htmlspecialchars()

A htmlspecialchars()função converte caracteres especiais em entidades HTML:

htmlspecialchars ( 
    string $string , 
    int $flags = ENT_COMPAT , 
    string|null $encoding = null , 
    bool $double_encode = true 
) : stringLinguagem de código:  PHP  ( php )

A htmlspecialchars()função aceita uma string de entrada ($string) e retorna a nova string com os caracteres especiais convertidos em entidades HTML.

A tabela a seguir mostra os caracteres especiais que a htmlspecialchars()função converterá em entidades HTML:

Personagem Nome Substituição
& E comercial &amp;
" Citação dupla &quot;, a menos que  ENT_NOQUOTES esteja definido
' Citação única &#039; (para  ENT_HTML401sinalizador) ou  &apos; (para   ou  sinalizador), mas somente quando  o sinalizador ENT_XML1estiver   definidoENT_XHTMLENT_HTML5ENT_QUOTES
< Menor que &lt;
> Maior que &gt;

É $flaguma máscara de bits de um ou mais sinalizadores que controla como a função trata os caracteres especiais.

Especifica $encodingqual codificação a função deve usar ao converter caracteres.

Exemplo de função PHP htmlspecialchars()

O exemplo a seguir mostra como exibir uma string em uma página sem escapar:

<?php

$comment = "<script>alert('Hello there');</script>";
echo $comment;Linguagem de código:  PHP  ( php )

Se você executar o código em um navegador da web, verá uma mensagem de alerta.

Para escapar da $commentstring, você usa a htmlspecialchars()função da seguinte maneira:

<?php

$comment = '<script>alert("Hello there");</script>';
echo htmlspecialchars($comment);Linguagem de código:  PHP  ( php )

Agora, você verá a seguinte string na página da web:

<script>alert("Hello there");</script>Linguagem de código:  PHP  ( php )

Ao visualizar o código-fonte da página, você verá o seguinte código:

Resumo

  • XSS significa cross-site scripting, que é um tipo de ataque em que um hacker injeta código de cliente malicioso na saída de uma página da web.
  • Use a htmlspecialchars()função PHP para converter caracteres especiais em entidades HTML.
  • Sempre escape de uma string antes de exibi-la em uma página da web usando a htmlspecialchars()função para evitar ataques XSS.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *