Guia para Nonces no WordPress

Publicados: 2023-02-12

A 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!

Índice
1. Como funcionam os nonces no WordPress?
2. Criando um Nonce
3. Verificando um Nonce
4. Crie experiências digitais seguras no WP Engine

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!