esc_html() / esc_attr() / esc_url() — Escapar saída de dados

Time Full Services Time Full Services
Tipo Segurança
Nome do erro esc_html() / esc_attr() / esc_url() — Escapar saída de dados
Severidade Crítico
Desde WordPress 2.8
Descrição Funções de escaping que convertem caracteres especiais em entidades HTML seguras antes de exibir dados no navegador, prevenindo XSS.

Causa

Exibir dados do banco de dados, URLs ou input do usuário diretamente sem escapar permite que código JavaScript malicioso seja executado no browser dos visitantes.

Como resolver

Use a função de escape correta para cada contexto: esc_html() para texto em HTML, esc_attr() para atributos, esc_url() para URLs, esc_js() para JavaScript, wp_json_encode() para JSON.

PHP
<?php
$nome    = get_post_meta(get_the_ID(), '_nome_cliente', true);
$url     = get_post_meta(get_the_ID(), '_url_perfil', true);
$classe  = get_post_meta(get_the_ID(), '_classe_css', true);
$script  = get_option('meu_plugin_ga_id');

// ✅ Escapar conforme o contexto de uso:

// Em conteúdo HTML
echo '<p>' . esc_html($nome) . '</p>';

// Em atributos HTML
echo '<input value="' . esc_attr($nome) . '">';

// Em URLs (href, src, action)
echo '<a href="' . esc_url($url) . '">' . esc_html($nome) . '</a>';

// Em class="" ou id=""
echo '<div class="' . esc_attr($classe) . '">';

// Em JavaScript inline
echo '<script>var nome = ' . wp_json_encode($nome) . ';</script>';

// Em atributo data-* com JSON
echo '<div data-config="' . esc_attr(wp_json_encode(['id' => get_the_ID()])) . '">';

// Para traduções escapadas (internacionalização + segurança)
echo '<p>' . esc_html__( 'Olá mundo', 'meu-plugin' ) . '</p>';

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →