Início » Segurança para WordPress » O que você precisa saber sobre WordPress Nonces
Segurança para WordPress

O que você precisa saber sobre WordPress Nonces

Conheça e faça uso do WordPress Nonces para garantir segurança para WordPress, evitando ataques do tipo CSRF e protegendo suas informações.
Escrito Por Leandro Vieira em abril de 2020 /6 min de leitura
Conteúdo escrito por humano

Conhecer e fazer uso do recurso de WordPress Nonces é garantir mais segurança para WordPress, evitar ataques do tipo CSRF e proteger suas informações. Muitos desenvolvedores não conhecem essa funcionalidade e através deste artigo tenho a intenção de explicar o que você precisar saber sobre o assunto.

A definição de Nonce

Literalmente falando, Nonce quer dizer um número utilizado uma única vez. Em inglês teríamos algo como number used once ou number once. É um tipo de criptografia onde um determinado número, ou hash, é utilizado apenas uma única vez e muito adotado em sistemas de autenticação e na prevenção dos ataques do tipo CSRF.

In cryptography, a nonce is an arbitrary number that may only be used once. It is similar in spirit to a nonce word, hence the name. It is often a random or pseudo-random number issued in an authentication protocol to ensure that old communications cannot be reused in replay attacks…

https://en.wikipedia.org/wiki/Cryptographic_nonce

A definição de Nonces no contexto do WordPress

O token de segurança do WordPress é chamado Nonces. Por isso há particularidades e especificidades nesse mecanismo na plataforma. Sua principal utilidade é proteger URLs e formulários contra usos maliciosos ou suspeitos.

Embora a letra “N” venha de Number, o WordPress faz uso de números e letras para a composição de valor dos Nonces gerados. Além disso ele tem um tempo de vida específico ao contrário de ser utilizado uma única vez e também é único para cada usuário de acordo com o seu contexto.

Em resumo, é preciso que fique bem claro a tratativa de Nonces no WordPress:

  • É o mecanismo de token da plataforma que se chama Nonces;
  • Não é somente número, e sim letras e números;
  • Ele não é utilizado uma única vez;
  • O token é específico para cada usuário por um período de tempo e contexto;
  • Ele protege contra vários tipos de ataques e o principal deles é o CSRF;
  • Não protege contra ataque repetitivo, uma vez que não há uma checkagem de utilização única.

Uma abordagem super breve sobre o ataque do tipo CSRF

Cross-Site Request Forgery (CSRF) ou Falsificação de Solicitação entre Sites, em linhas gerais, é um tipo de ataque em que uma interface maliciosa (site, e-mail, mensagem instantânea e etc) executa uma ação insperada para um site confiável para executar ações como troca de senha, transferência de valores monetários ou a submissão de um formulário qualquer.

Para se aprofundar mais sobre o assunto considere a leitura dos links abaixo:

  • https://pt.wikipedia.org/wiki/Cross-site_request_forgery
  • https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) (inglês);

Como funciona o WordPress Nonces

O WordPress Nonces é implementado em todo o core da plataforma, mas os plugins e temas ativados também precisam fazer uso do recurso, caso contrário algumas partes e funcionalidades adicionadas por eles ficarão descobertas.

O valor dos tokens, ou melhor dos Nonces, são alterados a cada 12 horas e são válidos por 24. Logo, a chave atual e a penúltima são consideradas válidas. Isso evita que alguém possa copiar o valor de um Nonce antigo e reutilizá-lo na URL de uma operação de requisição HTTP.

Observe a URL abaixo utilizada para mover um Post para a lixeira, por exemplo.

/wp-admin/post.php?post=99&action=trash&_wpnonce=d4e7c84572

d4e7c84572 é o valor do Nonce informado no parâmetro de URL padrão do WordPress chamado _wpnonce. Agora observe uma outra para limpar o post do cache através do plugin W3 Total Cache.

/wp-admin/admin.php?page=w3tc_dashboard&w3tc_flush_pgcache_purge_page&post_id=99&_wpnonce=85c93a8183

O parâmetro de URL é o mesmo, _wpnonce. Mas o valor do Nonce é diferente. E como falamos no início deste artigo, os Nonces são únicos por usuário e contexto. Em ambos exemplos de URL temos o mesmo usuário, mas contextos diferentes. Um contexto de mover o Post para a lixeira e outro para limpá-lo do cache.

Caso o Nonce tenha expirado ou seja inválido, o WordPress exibirá uma mensagem de erro como demonstrado na imagem abaixo.

Exemplo de mensagem de erro do WordPress Nonces

A aplicação do WordPress Nonces é realizada em todas as URLs que executam uma ação, nas requisições AJAX e formulários. Volto a repetir, os plugins e temas que adicionam funcionalidades extras na administração devem implementar os Nonces para maior segurança, mas infelizmente nem todos o fazem. Conhecendo o funcionamento você conseguirá validar se o recurso está sendo aplicado ou não.

Como alterar o mecanismo de Nonces do WordPress

Se você não gosta da implementação de Nonce do WordPress, é possível substituí-lo por completo ou alterar funcionalidades específicas. A API do WordPress te permite essas personalizações e sua extensibilidade é incrível, e todas as funções do core para implementar os Nonces são pluggable.

Basicamente você precisará substituir cinco funções. Duas específicas para as requisições em AJAX e outras três para o mecanismo como um tudo. São elas:

  • check_admin_referrer();
  • check_ajax_referrer();
  • wp_create_nonce();
  • wp_verify_nonce();
  • wp_nonce_tick();

O arquivo wp-config.php e os Nonces do WordPress

O WordPress através do arquivo wp-config.php armazena constantes PHP com hashes que são utilizados em todas as tratativas de senha e criptografia, e claro para os Nonces através das contantes NONCE_KEY e NONCE_SALT.

A imagem abaixo ilustra esse exemplo.

Exemplo de retorno do serviço secret-key do WordPress.org
Exemplo de retorno do serviço secret-key do WordPress.org

O WordPress.org disponibiliza uma API que gera esses códigos através do serviço secret-key.

Agora que você conhece o WordPress Nonces exija que os temas e plugins em uso no seu site façam uso do recurso, caso contrário delete e se recuse a utilizá-lo. Fazer uso do mecanismo de Nonce é garantir mais segurança e evitar ataques do tipo CSRF como mencionado. E considere proteger o arquivo wp-config.php.

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.
Qual nota você da para este artigo?
Ruim

O que você achou disso?

Clique nas estrelas

Média da classificação 0 / 5. Número de votos: 0

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Excelente
Artigos Relacionados

  1. Rodrigo Vieira Eufrasio da Silva
    Leandro Parabéns, cada vez mais escrevendo artigos de qualidade, para uma solução open source que é nosso Wordpress.
  2. Leandro Vieira
    Obrigado Rodrigo, Toda segunda-feira tenha postado um conteúdo sobre segurança e WordPress. Fique ligado :D
  3. Matheus Gomide
    Ótimo artigo Leandro, muito obrigado, me ajudou muito! Leandro gostaria de tirar algumas dúvidas você parece entender bem de Wordpress. Uso o Wordpress a 1 ano ( sou desenvolvedor a 4 ) e desde então utilizo Wordpress em quase todos meus projetos... Mas ouço muitas críticas de outros desenvolvedor em relação a segurança do Wordpress, que não adianta utilizar o framework e não conseguir fazer tudo que ele oferece na ' raça ' sem a ferramenta, e coisas do tipo... Tem alguma área a qual posso te fazer esse tipo de pergunta, ou algum e-mail, gostaria de tirar algumas duvidas não de código, mas da ferramenta Wordpress em si. Obrigado.
    1. apiki
      Fala Matheus, Essa impressão é recorrente. Em função disso criamos uma iniciativa chamada "O WordPress é seguro. Inseguro é você" além de conteúdos para melhorar a segurança. Abaixo envio os links para você analisar. https://apiki.com/wordpress-seguro/ https://apiki.com/oferta/dicas-de-seguranca-para-wordpress/ https://apiki.com/oferta/guia-seguranca-wordpress/ :D 2016-11-07 10:24 GMT-02:00 Disqus :
      1. Matheus Gomide
        ooopa, valeu parceeiro! Vou dar uma boa olhada. Só mais uma perguntinha (desculpa encher o saco), você acha válido utilizar e-commerce (woocommerce) no Wordpress? ou depende de algumas coisas como tamanho do projeto, tamanho do bd, mas em geral da pra usar...? Ou não recomenda muito. Obrigado!!
        1. apiki
          O woocommerce é a melhor solução para E-Commerce no WordPress. Siga em frent 2016-11-07 11:19 GMT-02:00 Disqus :
  4. […] WordPress Nonces e o que você precisa saber sobre isso […]
  5. […] WordPress Nonces e o que você precisa saber sobre isso […]

Construa seu site WordPress sob medida com os maiores especialistas em WordPress da America Latina
Conheça a Apiki

Faça um comentário
Cadastre-se rápido

Fazer Login