Blog sobre WordPress
No Result
View All Result
  • Web Stories
  • Desenvolvimento
  • Infra
  • Mobile
  • Performance
  • Segurança
  • SEO
  • E-commerce
Cadastrar e-mail
  • Web Stories
  • Desenvolvimento
  • Infra
  • Mobile
  • Performance
  • Segurança
  • SEO
  • E-commerce
No Result
View All Result
Blog sobre WordPress
No Result
View All Result

Início » Segurança para WordPress » As funções mais utilizadas no WordPress para validação de dados

As funções mais utilizadas no WordPress para validação de dados

Leandro Vieira by Leandro Vieira
6 anos ago
Reading Time: 5 min
3
Funções WordPress para validação de dados
Compartilhe no FacebookCompartilhe no LinkedIn

As funções WordPress para validação de dados são diversas e utilizadas pelo próprio core para garantir maior segurança e integridade dos dados no input e output.

Conteúdo relacionado

Segurança e LGPD: comece a implementação pelo básico

ModSecurity como Web Application Firewall no WordPress

O plugin para implementar 2FA – autenticação de dois fatores

Essas mesmas funções podem (e devem!) ser utilizadas pelos desenvolvedores de temas e plugins. Caso contrário, e com absoluta certeza, seu projeto estará vulnerável a SQL Injection, XSS e vários outros tipos de ataques.

Você conhece todas as funções WordPress para validação de dados?

Click To Tweet

Assim como o WordPress, o PHP também possui suas próprias funções WordPress para validação de dados. E no contexto da plataforma, há funções equivalentes com especificidades.

Há dois anos atrás escrevi neste blog sobre o assunto falando porque a validação de dados é importante para a segurança no WordPress.

Transcrevo abaixo quatro pontos essenciais para você considerar:

  1. Não confie nos usuários e nos dados que lhe são entregues;
  2. Seu código além de funcional precisa ser seguro;
  3. Valide dados de entrada (input) e dados de saída (output);
  4. Faça uso das funções nativas do WordPress para validação de dados.

As funções WordPress para validação de dados

São dezenas de funções WordPress para validação de dados, cada uma focada em um tipo de validação, você vai se inteirando do assunto e dando importância a questão e por conseguinte utilizando mais funções para validar os dados.

No entanto, há três funções que você precisa começar adotar a partir de hoje em todos os seus projetos de desenvolvimento de temas e plugins.

Você deve também, retomar os projetos antigos e aplicar essas funções. O uso é simples e a segurança agregada é muito considerável.

As três principais funções

  1. esc_html();
  2. esc_attr();
  3. esc_url().

Antes de compreender cada uma delas com mais detalhes é preciso entender algumas questões simples e relevantes.

Essas funções começam com “esc_”. A abreviação “esc” vem de “escape” que significa “escapar”. Se consultarmos o dicionário fica ainda mais claro a intenção “livrar-se de situação perigosa, dolorosa, desagradável”.

Elas retornam os dados recebidos através do seu parâmetro, portanto, é preciso considerar a função echo para exibir os dados tratados por essas funções.

Além disso, todas elas estão disponíveis somente a partir da versão 2.8 do WordPress. Essas mesmas funções podem ser utilizadas para o input ou output de dados.

Considerando essas três funções WordPress para validação de dados, vamos escapar, ficar livres, códigos HTML, códigos inválidos para atributos de tags HTML e URLs.

A função esc_html() do WordPress

Para ficar simples e claro o entendimento de uso da função esc_html() considere o seguinte cenário ERRADO.

<h3><?php echo $var_title; ?></h3>

No exemplo de código acima, estamos mostrando um valor contido numa variável para ser o valor englobado pelas tags H3.

Essa variável, antes de ser exibida, deve ser escapada para exibir com segurança o seu valor e evitar ataques XSS. Nesse cenário que entra a função esc_html(), assim:

<h3><?php echo esc_html( $var_title ); ?></h3>

A função esc_html() vai codificar os caracteres < (menor que) > (maior que) & (E comercial) ” (aspas duplas) e ‘ (aspas simples).

Além disso ela aplica no valor recebido o filtro “esc_html” no dado retornado.

A função esc_attr() do WordPress

A função esc_attr() é bem parecida e em muita das vezes confundida com a esc_html(). O macete para diferenciar é que attr é uma abreviação de attribute, ou seja, atributo.

Essa função WordPress é indicada para validar dados de atributos de tags HTML.

Considerando o mesmo exemplo anterior, imagine o seguinte cenário ERRADO.

<h3 class="<?php echo $var_class_name; ?>"><?php echo esc_html( $var_title ); ?></h3>

O valor da variável $var_class_name deve ser escapada, caso contrário o código será passível de ataques XSS. E a aplicação de uso da função é simples, observe:

<h3 class="<?php echo esc_attr( $var_class_name ); ?>"><?php echo esc_html( $var_title ); ?></h3>

A função esc_attr() vai codificar os caracteres < (menor que) > (maior que) & (E comercial) ” (aspas duplas) e ‘ (aspas simples).

A diferença entre a esc_html() é que ela aplica no valor recebido o filtro “attribute_escape” no valor retornado, ao contrário do filtro “esc_html”.

Você sabe a diferença de uso das funções esc_html() e esc_attr()?

Click To Tweet

A função esc_url() do WordPress

A primeira informação relevante é que a função esc_url() substituiu a função clean_url() que ficou em desuso.

Ela não precisa ser utilizada em conjunto com a esc_attr() quando URL for esperado como valor de um atributo, ou com a esc_html() quando URL for esperado como texto.

Essa função recebe três parâmetros ao contrário das outras duas que recebem somente um. No entanto, somente o primeiro é requerido, que neste caso é a URL em si.

URLs devem ser escapadas sempre para garantir sua integridade, seja quando ela for utilizada como texto, atributo de tag HTML ou qualquer outra aplicação.

Exemplos práticos de seu uso seria:

<p><?php echo esc_url( $var_url ); ?></p>

<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Página inicial</a>

Um exemplo prático de ataque XSS

Ataques do tipo XSS é recorrente e boa parte deles acontecem por falta de escapamento de dados.

Imagine o seguinte cenário: você exibe na tela o valor de uma variável contida em parâmetro de URL. Esse valor é público, fácil de ser manipulado e pode conter um código HTML/JavaScript malicioso.

O código malicioso quando exibido na tela é processado pelo navegador de internet. Imagine que esse código aplique um redirecionamento e leve o usuário para um site infectado ou com prática de pishing para roubo de senhas ou dados diversos.

<p>Resultado da sua busca por <?php echo $_GET['s']; ?></p>

No parâmetro da URL, ao contrário de conter um termo de busca, poderia ter algo assim:

site.com/?s=<script>CÓDIGO JS DE REDIRECIONAMENTO</script>

E com isso o código seria aplicado ao DOM, processado pelo navegador de internet e redirecionado ao usuário para o destino malicioso desejado.

Esse tipo de ataque é muito comum, assim como a correção. Basta escapar o dados contidos no parâmetro “s”, por exemplo com o uso da função esc_html().

Considerando esse exemplo de busca, o WordPress tem uma função específica, a get_search_query() e the_search_query(). Elas utilizam internamente as funções de escape.

Conclusão

É muito comum desenvolvedores não se atentarem com a questão de segurança, seja por desconhecimento ou preguiça mesmo.

O uso das funções WordPress para validação de dadoss aqui apresentadas deixarão os códigos dos seus temas e plugins mais seguros, livres de XSS. Lembre-se que códigos além de funcional devem ser seguros.

Tags: xss
Share8Share1SendShare
Previous Post

wp-config.php e as constantes de segurança do WordPress

Next Post

Site seguro: confira 15 dicas em vídeo para ajudar na segurança do seu WordPress

Leandro Vieira

Leandro Vieira

Uma das grandes referências de WordPress no Brasil, entusiasta e evangelista da plataforma. Fundador e CEO da Apiki, empresa especializada no desenvolvimento web com WordPress.

Related Posts

Rate Limiting
Segurança para WordPress

Como ferramentas de Rate Limiting ajudam em segurança e performance

4 de agosto de 2020
Usuários e senhas fortes para melhorar a segurança no WordPress
Segurança para WordPress

Usuários e senhas fortes para melhorar a segurança no WordPress

28 de julho de 2020
Tipos e benefícios dos certificados de segurança TLS/SSL.
Segurança para WordPress

Tipos e benefícios dos certificados de segurança TLS/SSL.

19 de agosto de 2020
Como remover o nome de usuário “admin” do WordPress
Segurança para WordPress

Como remover o nome de usuário “admin” do WordPress

19 de agosto de 2020
Next Post
Selecionamos 15 dicas em vídeo para te ensinar a deixar seu site seguro

Site seguro: confira 15 dicas em vídeo para ajudar na segurança do seu WordPress

Como uma CDN melhora a performance

Uma rede CDN é segura, você pode confiar

Comments 3

  1. Jean C. says:
    6 anos ago

    Excelente artigo!

    Responder
  2. Pingback: Site seguro: confira 15 dicas em vídeo para ajudar na segurança do seu WordPress
  3. Pingback: Segurança de dados no WordPress: Como os desenvolvedores full-stack podem impactar?

Deixe um comentário Cancelar resposta

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

Receba no seu e-mail uma série de conteúdos sobre Infra para WordPress.

  • Este campo é para fins de validação e não deve ser alterado.

Facebook LinkedIn Instagram Twitter Youtube Github RSS

Sobre a Apiki

Empresa especializada em WordPress com três unidades de negócios.

  1. Design e Desenvolvimento;
  2. Infra e Hospedagem;
  3. Suporte e manutenção.

Em resumo, só fazemos uma coisa em WordPress: tudo.

Páginas do Apiki.com

  • Apiki.com
  • Sobre a Apiki
  • Hospedagem
  • Desenvolvimento
  • UX & UI para WordPress
  • Growth em WordPress
  • Suporte
  • Atendimento

Páginas do Blog

  • Sobre
  • Newsletter
  • Desenvolvimento WordPress
  • Segurança para WordPress
  • WordPress Mobile
  • Infra para WordPress
  • WordPress SEO
  • WordPress Performance
  • E-commerce

© 2020 Apiki - Empresa especializada em WordPress.

No Result
View All Result
  • Web Stories
  • Desenvolvimento
  • Infra
  • Mobile
  • Performance
  • Segurança
  • SEO
  • E-commerce

© 2020 Apiki - Empresa especializada em WordPress.