A trilogia para um debug seguro e eficaz no WordPress
Considere o uso do mecanismo de debug padrão do WordPress, mas faça uso de forma segura através das constantes e funções corretas para isso.
Este artigo foi publicado em 22/06/2015. Por ter sido considerado um dos melhores artigos de 2015, foi republicado hoje.
Iniciativa WordPress SeguroCriamos uma iniciativa chamada #WordPressSeguro para divulgar e colaborar com o que diz respeito à segurança para WP. Além de informações, disponibilizamos um Guia Prático de Implementações para Segurança em WordPress.
Sobre debug no WordPressDepurar código precisa ser parte do processo de desenvolvimento. Isso amplifica a qualidade final do produto e eleva a interoperabilidade com o ecossistema do WordPress, ou seja, o core, os plugins em questão e o tema em uso.
É sabido que cada instalação do WP é recheada com plugins para agregar funcionalidades diversas e um tema para interação pública. Isso traz uma variedade de códigos, padrões e desafios.
Portanto, considere o desenvolvimento dos seus projetos com o debug ativo e revisado para evitar os erros ocultos, os avisos e alertas e as advertências de códigos. Na correria, ou na falta de planejamento do desenvolvimento, o debug é deixado de lado, qualidade e segurança passam batidos, e lamentavelmente chega à produção um código ruim, inseguro e falho.
Debug de forma segura, as três constantes e duas funçõesDe forma nativa, temos um sistema de debug que, por padrão, vem desativado. Além da possibilidade da ativação, temos capacidades ocultas para um poderio e segurança maior do mecanismo.
A constante WP_DEBUG
O debug do WordPress é ativado através da constante WP_DEBUG arquivo wp-config.php.
define( 'WP_DEBUG', false ); // Por padrão vem desativado define( 'WP_DEBUG', true ); // Considere o valor true para ativar
As outras possibilidades de configuração são as seguintes:
define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
A constante WP_DEBUG_LOG
Através da constante WP_DEBUG_LOG com o valor true, teremos todos os avisos e alertas, erros e as advertências de códigos salvos em um arquivo chamado debug.log, que é localizado em /wp-content/debug.log.
Esse arquivo deve ser revisado com periodicidade e as as inconsistências de todos os códigos da aplicação devem ser analisadas e, em seguida, tudo deve ser levado ao conhecimento da equipe para a solução. Além disso, esse procedimento é um grande aliado para análises de situações fora da tela em que o processamento acontece em requisições AJAX e no recurso de Cron do WordPress, por exemplo.
A contante WP_DEBUG_DISPLAY
O valor true e/ou false pode e deve ser considerado para a constante WP_DEBUG_DISPLAY. Seu valor padrão é true, o que faz com que os erros sejam exibidos na tela – esse mesmo valor deve ser considerado em ambientes de desenvolvimento.
Em ambientes de produção, a referida constante deve estar com o valor false, evitando assim a exibição dos erros na tela onde detalhes da aplicação são expostos.
Eu aconselho o uso do valor false para todos os ambientes, mas em conjunto com o valor true para a constante WP_DEBUG_LOG. Dessa forma, não teremos os erros printados na tela, evitando exposição do ambiente e, em alguns casos, comprometendo a execução da interface, além de forçar a equipe a revisar o arquivo debug.log para análises e correções das inconsistências.
Os valores das constantes alinhados às configurações do PHP
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); @ini_set( 'log_errors', 'On' ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 'Off' );
Com essa combinação de constantes e valores, garantimos um cenário ideal para um debug seguro e eficaz no WordPress, registrando e armazenando as inconsistências, mas evitando sua exposição.
Atente-se para o uso da função ini_set do PHP, utilizada para definir o valor de uma configuração. É importante seu uso, além da constante do WP, para nos certificarmos de que o comportamento desejado para a aplicação está alinhado com o comportamento do PHP configurado no servidor.
Por exemplo, imagine que o PHP foi configurado para exibir erros, tendo a diretiva display_errors no arquivo php.ini com o valor On e a constante WP_DEBUG_DISPLAY está com o valor false para não exibir erros. O comportamento configurado no PHP vai sobrepor o do WP, por isso alinhe ambos e evite surpresas.
Além dos erros ocultos, os avisos e alertas e as advertências de códigosO WordPress modifica, melhora, adiciona e remove novas funções e seus argumentos a cada versão lançada. Mas há uma política clara de manutenção de códigos legados, tratando segurança e consistência para o uso de novas versões e manutenção de códigos antigos. Portanto, considere manter o WordPress e seus componentes sempre atualizados.
As funções e seus argumentos que ficaram em desuso no WP são tratados de forma especial. Primeiro, não há quebra e inconsistência. Durante alguns ciclos de lançamentos é mantida uma compatibilidade com o sistema legado. Segundo, avisos são emitidos quando se faz uso de código em desuso, informando que eles foram modificados na versão x e o correto a ser utilizado a partir de agora é uma outra função/argumento e que em um futuro não muito distante a forma de uso deixará de ser suportada.
Esses avisos são registrados no debug.log, permitindo assim a consulta pelo desenvolvedor sobre a nova forma de prosseguir adiante. Ou seja, o WordPress, além de manter a compatibilidade, detalha o código ultrapassado a ser corrigido.
Localização e proteção do arquivo debug.logComo informado, o arquivo debug.log fica localizado no diretório /wp-content. Esse arquivo em hipótese alguma deve ser público e, para isso, precisamos protegê-lo.
A correta permissão para o arquivo
Considere a permissão 600 para o arquivo debug.log que permitirá a leitura e gravação do core do WordPress e seus plugins ao arquivo.
Uma contribuição do .htaccess
Além da correta permissão, para quem usa Apache, considere uma proteção extra ao arquivo através de diretivas no .htaccess, e bloqueie o arquivo de acessos externos por meio do navegador de Internet – por exemplo, quando alguém tentar acessar dominio-do-site.com/wp-content/debug.log.
<Files debug.log> Order allow,deny Deny from all </Files>
Considere o uso do mecanismo de debug padrão do WordPress, mas faça uso de forma segura através das constantes e funções corretas para isso. Garanta segurança e maior qualidade dos códigos desenvolvidos e atualizados da plataforma.








