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

Como proteger blogs contra ataques brute force facilmente

  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