Guia para Nonces no WordPress
Publicados: 2023-02-12A segurança é um tópico vital para todos os proprietários de sites. Embora existam muitas estratégias para manter seu site seguro, o uso de nonces no WordPress não deve ser negligenciado. Esse é um dos recursos de segurança mais usados e evita uma série de possíveis problemas.
Um nonce é um 'número usado uma vez' e protege formulários e URLs de indivíduos mal-intencionados e outros usos indevidos. Esses números funcionam como valores de identificação que os navegadores dos usuários terão que mostrar, a fim de obter permissão para realizar ações confidenciais.
Neste artigo, veremos como os nonces funcionam no WordPress e como criá-los. Em seguida, discutiremos como verificar um nonce. Vamos começar!
Como os nonces funcionam no WordPress?
O objetivo principal de um nonce é proteger seu site WordPress contra ataques maliciosos, como Cross-Site Request Forgeries (CSRFs). Esse tipo de ataque engana os usuários para que enviem um formulário ou cliquem em um link prejudicial ao seu site. Para proteger seu site, o WordPress verifica o valor nonce e só permite que a ação seja concluída se esse valor estiver correto.
Nonces já fazem parte da funcionalidade do WordPress e você não precisa adicioná-los aos elementos gerados pelo WordPress. Isso significa que as principais ações, como adicionar e editar postagens, são protegidas automaticamente.
Quando um nonce é usado, ele tem uma vida útil padrão de 24 horas. Após esse tempo, o nonce não pode mais ser usado para verificar a ação para a qual foi definido. No entanto, esse tempo de vida pode ser ajustado pelos administradores do site.
Um dos ataques CSRF mais comuns contra os quais os nonces protegem é a exclusão maliciosa de contas de usuário. Depois de implementar um nonce, sua tela de administração gerará uma URL para a exclusão da conta. O WordPress adicionará um nonce ao final dessa URL, que ficará mais ou menos assim:
http://seudominio.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315
Se um invasor tentar substituir o ID do usuário por outro valor, como “usuário=8”, o nonce será inválido. A exclusão da conta falhará e uma página de erro 403 Forbidden será exibida. Isso torna muito mais difícil para indivíduos mal-intencionados atacarem o conteúdo do seu site.
Saber que os nonces podem proteger seu site é importante, mas você também precisa entender como implementá-los. Embora eles já estejam ativos para os recursos padrão do WordPress, pode ser necessário implementá-los manualmente para seus temas e plugins.
Criando um Nonce
Para criar um nonce, você precisará adicionar uma função ao código do seu site. Todos os códigos de criação nonce são colocados no arquivo functions.php . Para abrir este arquivo, navegue até Appearance > Theme Editor em seu painel do WordPress. À direita, clique em functions.php para abrir o editor de arquivos.
Nonces são implementados separadamente para URLs, formulários e ações. Para criar um nonce de ação, adicione o seguinte código a este arquivo:

$nonce= wp_create_nonce('$action');
A seção “$action” do código deve ser ajustada para refletir a ação que você deseja que o nonce verifique. Um exemplo seria usar a ação “delete-post”, que configura o nonce para verificar os usuários que tentam deletar postagens.
Para criar um nonce para um URL, você pode usar o seguinte código:
$nonce= wp_nonce_url();
Dentro dos colchetes, você precisará indicar os argumentos da função. Este é o URL simples e a string para as ações do usuário. A string deve ser específica para um único usuário, a fim de melhorar a segurança do nonce.
Se você deseja criar um nonce para excluir uma conta de usuário, pode usar este trecho:
$nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);
O WordPress padronizará o nome do nonce para “_wpnonce”, mas você pode atualizá-lo adicionando o nome escolhido ao final da string acima.
Para criar um nonce para um formulário, inclua este código:
$nonce= wp_nonce_field();
Entre colchetes, você precisará adicionar uma string para as ações do usuário. Depois de concluída, a função cria dois campos ocultos no formulário, com o primeiro contendo o valor de hash nonce. O segundo campo é o URL atual. A função final deve ser algo como isto:
$nonce= wp_nonce_field('remove-comment_'.$comment_id);
Essa função nonce também terá o nome nonce padrão do WordPress. No entanto, isso também é algo que você pode modificar, se preferir.
Verificando um Nonce
Depois de adicionar um nonce ao seu site WordPress, é importante que você o verifique. Isso garante que o nonce esteja funcionando corretamente e mantendo seu site seguro.
Diferentes métodos são usados para verificar o nonce para URLs e formulários. Para verificar um URL nonce, adicione o seguinte código ao arquivo functions.php :
wp_verify_nonce($nonce, $action);
Nesta função, ajuste “$nonce” para o nome do nonce que você deseja verificar, como “delete-user”. Em seguida, altere a string “$action” para o horário específico em que o nonce é criado. Quando a função for executada, ela retornará “false” se o nonce for inválido.
Por outro lado, se o nonce for válido, a função retornará 1 ou 2. Isso informa a idade do nonce. Um valor igual a 1 significa que o nonce foi criado nas últimas 12 horas. Um valor igual a 2 significa que o nonce foi criado há mais de 12 horas, mas há menos de 24 horas.
Se você adicionou um nonce a um formulário, o código a seguir é necessário para verificá-lo:
check_admin_referer($action, $nonce);
Se o valor nonce for válido, o formulário funcionará como pretendido. No entanto, se o nonce for inválido, o navegador do usuário o redirecionará para uma página de erro 403 Forbidden.
Crie experiências digitais seguras no WP Engine
A segurança é vital para um site estável e os nonces adicionam uma camada extra de proteção. Para implementá-los, tudo o que você precisa fazer é adicionar algum código ao seu arquivo functions.php . O código usado varia de acordo com o tipo de nonce que você deseja criar e a ação que deseja proteger.
Embora criar e implementar nonces melhore a segurança do site, também existem outros protocolos de segurança a serem considerados. Felizmente, a plataforma segura de hospedagem WordPress do WP Engine oferece alguns dos melhores recursos de segurança para usuários e desenvolvedores. Isso deixa você com mais tempo para se concentrar em aperfeiçoar seu site WordPress!