Como sanitizar corretamente HTML vindo do ACF no WordPress

Sumário

Sanitização no WordPress: Protegendo HTML do ACF ewp_kses

A sanitização no WordPress: protegendo HTML do ACF com wp_kses é essencial para manter seu site seguro contra ataques como XSS. Neste guia, você vai aprender passo a passo como aplicar a sanitização no WordPress: protegendo HTML do ACF com wp_kses da maneira correta, garantindo segurança e desempenho.

Por que a sanitização é importante?

Ou seja, ao permitir que usuários insiram HTML

você corre o risco de que scripts maliciosos sejam executados no navegador de outras pessoas — o que pode comprometer a segurança dos dados e da navegação.
A esse tipo de ameaça damos o nome de XSS (Cross-site Scripting).

Para evitar esse tipo de vulnerabilidade, é necessário realizar a sanitização do conteúdo, removendo qualquer tag ou atributo perigoso antes que ele seja exibido.
Felizmente, o WordPress oferece recursos prontos para isso — e é exatamente o que você verá a seguir.

Passo 1: Recupere o conteúdo do ACF

Agora que entendemos a importância da sanitização, vamos começar com o primeiro passo: recuperar o conteúdo do ACF.

				
					$descricao_html = get_field('descricao_html');

				
			

Passo 2: Use a função wp_kses()

Depois de recuperar o conteúdo, em seguida, Use a função wp_kses() para sanitizar o conteúdo.

				
					$descricao_html_sanitizada = wp_kses($descricao_html, array(
    'p' => array(), // Permite tags <p>
    'a' => array('href' => true, 'title' => true), // Permite links com atributos href e title
    'strong' => array(), // Permite a tag <strong>
    'em' => array(), // Permite a tag <em>
    // Adicione outras tags e atributos conforme necessário
));
				
			

Passo 3: Exiba o conteúdo sanitizado

Agora que você sanitizou o conteúdo, pode exibi-lo de forma segura no front-end:

				
					// exibe o conteúdo sanitizado
echo $descricao_html_sanitizada;
				
			

Passo 4: Permitir ou restringir tags adicionais

O WordPress possui uma lista de tags e atributos permitidos por padrão

Mas você pode personalizá-la com a função wp_kses_allowed_html(). Caso precise adicionar tags extras para casos específicos, basta expandir a lista com a função:

				
					$allowed_html = wp_kses_allowed_html('post'); // Obtém as tags permitidas para posts
$allowed_html['span'] = array('class' => true); // Adiciona a tag <span> com o atributo class

$descricao_html_sanitizada = wp_kses($descricao_html, $allowed_html);

				
			

Dica de performance

Quando você trabalha com conteúdo dinâmico, como o ACF

E precisa sanitizar em grande escala, Além disso, quando você trabalha com conteúdo dinâmico, como o ACF, é recomendado armazenar os resultados da sanitização para melhorar a performance. Utilize o set_transient() ou wp_cache_set() para armazenar os dados sanitizados temporariamente, evitando a necessidade de recalcular a sanitização repetidamente.

Exemplo:

				
					$cache_key = 'descricao_html_sanitizada';
$descricao_html_sanitizada = get_transient($cache_key);

if ( false === $descricao_html_sanitizada ) {
    $descricao_html_sanitizada = wp_kses($descricao_html, $allowed_html);
    set_transient($cache_key, $descricao_html_sanitizada, HOUR_IN_SECONDS);
}

echo $descricao_html_sanitizada;

				
			

Como lidar com HTML complexo

Se você precisa permitir mais tags HTML específicas

O ACF possui campos que permitem edição de HTML mais flexível, como o campo WYSIWYG (What You See Is What You Get), que é mais robusto. No entanto, é sempre importante garantir que, mesmo em campos mais dinâmicos, você tenha controle sobre a segurança dos dados.

Como vimos, a sanitização no WordPress com wp_kses é uma etapa crítica quando se trabalha com HTML vindo do ACF.

Conclusão

Em resumo, sanitizar o conteúdo HTML vindo do ACF

É essencial para garantir que seu site permaneça seguro. Usando wp_kses(), você pode controlar o que é permitido no HTML, evitando que scripts maliciosos sejam executados. Portanto, a prática de sanitização deve ser aplicada de forma consistente, principalmente quando você permite que os usuários insiram conteúdo personalizado.

Agora, ao utilizar campos ACF com HTML, você pode garantir a segurança do seu site e aproveitar a flexibilidade desses campos de forma responsável. Se você gostou dessas dicas, compartilhe com sua equipe de desenvolvimento ou com outros colegas que trabalham com WordPress! 🚀

❓ Perguntas Frequentes (FAQ)

É seguro usar HTML nos campos do ACF?
Sim, desde que você faça a sanitização correta do conteúdo antes de exibi-lo no front-end. O ACF permite inserção de HTML, mas cabe a você garantir que esse HTML não contenha códigos maliciosos.
A função mais recomendada é o wp_kses(), pois permite definir exatamente quais tags e atributos HTML são permitidos. Isso garante controle total sobre o que será exibido.
Sim, você pode aplicar wp_kses() em qualquer conteúdo que venha de campos ACF, especialmente os do tipo “Texto”, “Textarea” ou “WYSIWYG”. O importante é aplicá-la no momento da exibição, e não no salvamento.
Sim. Você pode utilizar a função wp_kses_allowed_html() para obter a lista de tags permitidas e adicionar outras que você desejar, como com atributos específicos.

Agora que você sabe como proteger o HTML dos campos ACF, implemente essas práticas no seu projeto WordPress e compartilhe este conteúdo com sua equipe ou comunidade! 🚀

💡 assuntos relacionados:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *