sanitize_text_field() — Sanitizar entradas do usuário

Time Full Services Time Full Services
Tipo Segurança
Nome do erro sanitize_text_field() — Sanitizar entradas do usuário
Severidade Crítico
Desde WordPress 2.9
Descrição Remove tags HTML, codificação extra e caracteres problemáticos de uma string antes de armazená-la no banco de dados.

Causa

Armazenar input do usuário sem sanitização permite injeção de código malicioso (XSS, SQL Injection) que pode comprometer o site e os dados dos usuários.

Como resolver

Use a função de sanitização correta para cada tipo de dado. sanitize_text_field para texto simples, sanitize_email para e-mails, sanitize_url para URLs, wp_kses_post para HTML controlado.

PHP
<?php
// Mapa de sanitização por tipo de dado
function meu_plugin_sanitizar_dados(array $dados): array
{
    return [
        // Texto simples (remove HTML e espaços extras)
        'nome'       => sanitize_text_field(wp_unslash($dados['nome'] ?? '')),

        // Textarea (permite quebras de linha, sem HTML)
        'bio'        => sanitize_textarea_field(wp_unslash($dados['bio'] ?? '')),

        // E-mail
        'email'      => sanitize_email($dados['email'] ?? ''),

        // URL
        'website'    => esc_url_raw($dados['website'] ?? ''),

        // Inteiro
        'idade'      => absint($dados['idade'] ?? 0),

        // Float
        'preco'      => (float) filter_var($dados['preco'] ?? 0, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),

        // HTML limitado (permite b, i, em, strong, a)
        'descricao'  => wp_kses($dados['descricao'] ?? '', [
            'a'      => ['href' => [], 'title' => []],
            'b'      => [],
            'strong' => [],
            'em'     => [],
            'i'      => [],
        ]),

        // Slug/chave
        'slug'       => sanitize_key($dados['slug'] ?? ''),
    ];
}

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 →