Resolver problemas

Diagnosticar erros criptográficos do Sodium no WordPress

Revisto a 3 min de leitura wordpress errores seguridad

O WordPress e alguns plugins usam funções criptográficas para verificar assinaturas e proteger dados. O PHP pode fornecê-las através da extensão Sodium nativa e o WordPress inclui ainda uma biblioteca de compatibilidade para os ambientes que não a têm.

Um registo pode mostrar um erro como este:

PHP Fatal error: Uncaught TypeError: Argument 2 must be a string, integer given. 
in /home/usuario/public_html/wp-includes/sodium_compat/src/Core/Util.php:242

Este TypeError confirma que o segundo argumento recebido era um inteiro quando a função exigia uma cadeia de texto. O facto de o rastreio passar por wp-includes/sodium_compat/ não demonstra que falte o Sodium nem que ativar a extensão converta corretamente esse dado.

1. Conserve o rastreio completo

Anote a hora e procure no rastreio o primeiro ficheiro situado fora de wp-includes/sodium_compat/. Normalmente permite identificar o plugin, tema ou integração que preparou os argumentos. Não modifique os ficheiros de wp-includes: são substituídos ao atualizar e não corrigem quem faz a chamada.

2. Verifique o ambiente PHP do site

Reveja na informação do PHP se a extensão sodium está carregada. Faça a verificação a partir do mesmo PHP que executa o site: o PHP CLI pode usar outra versão ou configuração.

  • Se o plugin exigir expressamente a extensão nativa e esta não estiver carregada, ative-a em Select PHP Version ou peça ao fornecedor que o faça.
  • Se o Sodium já estiver ativo, ou se o erro indicar um tipo inválido, atualize o componente identificado e reveja com o seu programador porque é que envia um inteiro.
  • Se a falha apareceu depois de mudar de PHP, confirme que o site mantém as mesmas extensões na nova versão.

3. Verifique a correção

Repita exatamente a operação que falhava e reveja o registo da mesma hora. Confirme que o TypeError já não aparece e que a assinatura, o webhook ou a integração envolvida conclui o seu processo. A presença da extensão, por si só, não verifica que os dados enviados sejam válidos.

Não converta o argumento em texto dentro do sodium_compat para evitar o TypeError: chaves, assinaturas e mensagens têm formatos e comprimentos concretos. Uma conversão que elimina o erro pode deixar uma verificação incorreta.

Ao comunicar o rastreio ao programador, mantenha os nomes de funções e tipos, mas omita chaves, assinaturas privadas, tokens e conteúdo sensível. Use dados de teste para reproduzir a operação criptográfica; um ecrã sem erro não basta se a validação tiver sido omitida.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.