Você está lendo:

wp-config.php e as constantes de segurança do WordPress

Sobre:
wp-config.php e as constantes de segurança do WordPress

O arquivo wp-config.php centraliza todas as informações sensíveis e de configuração, entre elas as constantes de segurança para blindar o WP.

Leandro Vieira
wp-config.php e as constantes de segurança do WordPress

O arquivo wp-config.php do WordPress é o mais importante. Ele centraliza todas as informações sensíveis e de configuração, entre elas as constantes de segurança para blindar o WP.

As constantes de segurança refletem diferentes áreas da aplicação e do servidor. É importante conhece-las e saber das suas utilidades e o impacto que trarão.

Mas antes de tudo, você precisa reconhecer uma constante do PHP e por conseguinte do WordPress.

Sobre as contantes do PHP

As constantes são definidas como um identificador para um valor único. Elas são “parentes” das variáveis, mas tem suas particularidades, a saber:

  • Seu valor não pode ser alterado durante a execução do script;
  • Os nomes são case-sensitive, ou seja, “ESTE_NOME” é diferente de “Este_Nome”;
  • Por uma convenção, os nomes das constantes são todos em maiúsculos;
  • Ao contrário de uma variável, seu nome não começa com $ (cifrão);
  • O nome válido de uma constante começa com letra ou sublinhado e seguido por letras, números ou sublinhados;
  • As constantes são criadas através da função define().

Um exemplo de constante:

define( 'WP_DEBUG', false );

O impacto das constantes no WP

Sejam as constantes de segurança, ou não, elas impactarão todo o funcionamento da aplicação.

Como as constantes são alocadas no arquivo wp-config.php e esse é carregado primeiro do que qualquer outra coisa, as definições vão impactar todo o resto.

O valor de quase todas as constantes terão o valor de true ou false. Ou seja, de verdadeiro ou falso para habilitar ou desabilitar o recurso representado pela constante.

As constantes de segurança do WordPress

Neste artigo vamos conhecer e focar em importantes constantes que impactarão as seguintes áreas:

  • Banco de dados;
  • Chaves de segurança (Security Keys);
  • Debug;
  • Permissão de arquivos;
  • Edição de arquivos de temas e plugins;
  • SSL;
  • Atualização.

Constantes para a base de dados

Embora as constantes destinada a base de dados não seja direcionada a segurança, é muito importante que os seus valores sejam seguros.

Principalmente a constante DB_PASSWORD que armazena a senha do usuário ao banco de dados em uso. Essa senha precisa ser forte.

Um exemplo de senha forte aplicada a constante.

define( 'DB_PASSWORLD', 'IQ&36c0Mubx)ANcTXIBTgxIhtvyl4y(l}]Dsfx?03;' );

Embora não seja uma constante, a variável $table_prefix, que por padrão tem o valor “wp_”, não deve conter o valor padrão e sim um valor diferente para evitar de termos os nomes da nossa tabela público, uma vez que o esquema do banco de dados do WordPress é conhecido.

Caso você esteja utilizando o prefixo “wp_”, saiba como altera-lo e definir um mais seguro.

As chaves de segurança do WordPress

As chaves de segurança do WordPress começaram a ser adicionadas à plataforma à partir da versão 2.6. Em seguida as Salts foram adicionadas.

Elas são conhecidas como Secret Keys (chaves secretas) e Salts. São utilizadas para dar mais segurança aos dados sensíveis dos usuários como senhas e cookies.

No total são oito chaves, sendo quatro de cada tipo. Ambas são armazenadas em constantes PHP, ou no banco de dados da plataforma em caso da ausência delas no arquivo.

Sobre o gerador de Secret Keys e Salts

O WordPress.org mantém um serviço que gera automaticamente essas chaves em formatos de constantes do WordPress para você simplesmente copiar e colar no wp-config.php.

Imagem com códigos exemplificando as chaves de segurança do WordPress gerado pelo serviço do WordPress.org
Exemplo das chaves de segurança do WordPress gerado pelo serviço do WordPress.org

Debug, seguro.

Depurar uma aplicação se faz necessário durante o desenvolvimento do projeto ou na busca pelo entendimento de algum erro inesperado.

O WordPress possui um mecanismo próprio que lhe permite ativar ou desativar, definir a exibição, ou não, dos erros na tela e gravar essas informações em um arquivo chamado debug.log e fica localizado no diretório /wp-content.

Em ambientes de produção evite deixar o mecanismo ativado, exceto se houver necessidade. E considere blindar o arquivo debug.log com a permissão correta e bloqueio através do .htaccess para evitar a exposição das sensíveis informações nele armazenadas.

As constantes referentes ao Debug do WordPress são demonstradas abaixo em conjunto ao 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 certificarmos que o comportamento desejado para a aplicação está alinhado com o comportamento do PHP configurado no servidor.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); 
@ini_set( 'log_errors', 'On' ); 
define( 'WP_DEBUG_DISPLAY', false ); 
@ini_set( 'display_errors', 'Off' );

As constantes de segurança aplicada aos arquivos

Todos os arquivos e pastas precisam ter sua correta permissão no servidor. Isso inclui o core do WordPress, os plugins e temas, ou seja, tudo. Arquivos e pastas.

Através do terminal é possível facilmente executar os seguintes comandos para essa finalidade.

find /path/to/wp-base-folder-install/ -type f ! -perm 644 -exec chmod 644 {} \;

find /path/to/wp-base-folder-install/ -type d ! -perm 755 -exec chmod 755 {} \;

O primeiro define a permissão 644 para os arquivos, enquanto o segundo a permissão 755 para os diretórios. Existem particularidades para alguns arquivos, portanto considere conhecer as permissões corretas para os arquivos e pastas do WordPress.

Em servidores Apache, e em algumas hospedagens pode ocorrer a execução do módulo suEXEC. Esse cenário combinado a atualização do WordPress pode comprometer a definição das permissões.

Existem duas constantes destinadas a essa tratativa. Uma para atuar sobre as permissões dos arquivos e outra para as pastas. São elas:

define( 'FS_CHMOD_FILE', ( 0644 & ~ umask() ) );

define( 'FS_CHMOD_DIR', ( 0755 & ~ umask() ) );

Evite a edição dos arquivos de temas e plugins

O painel do WordPress tem um editor que permite a edição dos arquivos de plugins e temas instalados.

É um recurso nativo e que por padrão vem ativado.

O problema desse recurso para a segurança está ligado a invasão ao painel através de um login e senha. A descoberta desses dados pode acontecer de várias formas, dentre elas o ataque de força bruta.

Uma vez que o atacante ganha acesso a área administrativa ele poderá fazer uso do recurso de edição de plugins e temas para injetar códigos maliciosos ou realizar qualquer alteração que comprometerá sua aplicação.

Com a constante DISALLOW_FILE_EDIT não será possível editar os arquivos de plugins e temas através da interface do WordPress. O seu valor precisa ser true.

define( 'DISALLOW_FILE_EDIT', true );

TLS / SSL, requerido.

O tempo em que todos os sites, independentemente da área de atuação ou tamanho, terão um certificado de segurança SSL implementado está batendo na porta.

É um caminho sem volta e temos assistido mobilizações por todos os lados para ajudar nessa implementação. A mais expressiva tem sido a Let’s Encrypt com a disponibilização do certificado gratuitamente.

Até a sua versão 4.0, o WordPress tinha duas constantes relacionados ao SSL, eram elas: FORCE_SSL_LOGIN e FORCE_SSL_ADMIN. Você deve desconsiderar a primeira que entrou em desuso.

A constante FORCE_SSL_ADMIN é utilizada para forçar o uso do mecanismo de login e todo painel administrativo do WordPress a utilizar o protocolo HTTPS e navegar os dados de forma criptografada. Incluindo, obviamente, dados sensíveis como senhas e cookies.

define( 'FORCE_SSL_ADMIN', true );

Tudo atualizado, sempre.

Manter o core, os plugins e temas atualizados é a regra mais básica e necessária para manter a segurança do WordPress e evitar ataques.

Você precisa ter o seguinte em mente: nenhum software será 100% seguro. É uma lei da segurança.

Mas quando uma brecha de segurança é descoberta, softwares comprometidos com a segurança dos seus usuários disponibilizam versões para correção, mas para isso é necessário que se atualize para a versão mais recente disponibilizada.

A constante WP_AUTO_UPDATE_CORE é uma dica fácil e rápida para lidar com os updates. No artigo as atualizações do WordPress e seus componentes de segurança detalho ainda mais essa questão.

O valor dessa constante podem ser três: true, false ou minor. Esse último é o padrão e informa que toda atualização minor será automaticamente aplicada. Utilizar um dos outros valores é algo mais avançado e você precisa conhecer os impactos e diferenças.

Proteção para o arquivo wp-config.php

Como percebido, o arquivo wp-config.php é o coração do WordPress. Todas as informações sensíveis, estratégicas e definições de comportamento da aplicação estão nele.

Você precisa considerar proteções para manter o arquivo wp-config.php seguro.

As três principais dicas são:

  • Manter o arquivo um nível acima do diretório público;
  • Usar a permissão 400 (readonly) ou 600 (para permissão de escrita);
  • No arquivo .htaccess fazer uso de diretiva para proteção, se utilizar o Apache.

Conclusão

Considere proteger e ter um olhar diferente para com o arquivo wp-config.php. Considere mais ainda conhecer e fazer uso efetivo das constantes de segurança do WordPress para proteger o seu negócio.

Você pode imaginar que seria mais fácil se boa parte deles viessem ativadas por padrão. Eu também concordo. Mas é preciso ter a ciência que os casos de uso da plataforma são diversos.

E quando falo diverso, são diversos mesmo. Diferentes ambientes (desenvolvimento, homologação e produção); diferentes sistemas operacionais (Linux, Windows, Mac); diferentes servidores web (Apache, NGINX); diferentes combinações de sistemas e servidores e a lista continua.

Se você gostou desse artigo sobre Segurança para WordPress, provavelmente vai gostar de:
Mais posts como este