Existem dois conceitos aqui:
- validação - certificando-se de que os dados são válidos , ou seja, um inteiro é um inteiro, uma data é uma data (no formato correto, etc.). Isso deve ser feito antes de salvar os dados.
- higienização - tornando a data segura para seu uso no contexto atual (por exemplo, escapando de consultas SQL ou escapando HTML na saída).
A validação é, quase universalmente, exclusivamente para você . Você sabe quais dados está solicitando de um usuário e sabe quais dados está esperando - o WordPress não. A validação seria executada, por exemplo, no gancho save_post
antes de salvá-lo no banco de dados com update_post_meta
, ou pode ser feito especificando uma função de retorno de chamada na API de configurações, chamada pouco antes do WordPress salvar os dados. p>
A sanitização é um pouco mais mista. Ao lidar com dados que o WordPress conhece nativamente (por exemplo, um bloco de postagem), você pode ter certeza de que o WordPress já tornou os dados seguros. No entanto, 'seguro' depende do contexto; o que é seguro para uso em uma página, não é necessariamente seguro como um atributo de elemento. Portanto, o WordPress terá diferentes funções para diferentes contextos (por exemplo, the_title()
, the_title_rss()
, the_title_attribute()
) - então você precisa use o caminho certo .
Na maioria das vezes, o seu plug-in pode lidar com dados de pós-meta ou talvez de eventos de uma tabela personalizada. O WordPress não sabe o que são esses dados ou para que servem, portanto, certamente não sabe como torná-los seguros. Isso depende de você . Isso é particularmente importante no uso de esc_url()
, esc_attr()
, esc_textarea()
etc para evitar que entrada maliciosa seja capaz de incorporar código. Como o WordPress sabe que next_posts()
deve imprimir uma url para a página, ele aplica esc_url()
- mas com o post meta, digamos, ele não sabe que ele armazena uma URL - ou o que você quer fazer com ele (se imprimindo, esc_url()
, se redirecionando esc_url_raw()
. Se no dobut - errar do lado da cautela e da fuga você mesmo - e faça isso o mais tarde possível.
Finalmente - e quanto a salvar dados? Você precisa torná-lo seguro, então? Como mencionado, você faz precisa ter certeza de que os dados são válidos. Mas se você estiver usando a API do WordPress ( wp_insert_post()
, update_post_meta()
etc), não precisará limpar os dados - porque ao salvar os dados, o saneamento básico que você precisa fazer é escapar das instruções SQL - e o WordPress faz isso. Se você estiver executando instruções SQL diretas (digamos, para ler / gravar dados de uma tabela personalizada), use o $wpdb
class para ajudar você a sanear suas dúvidas.
Eu escrevi esta postagem de blog sobre validação e validação de dados a> que você pode achar útil - nele eu falo sobre o que é esperado de você a esse respeito.