A luta entre DISALLOW_FILE_EDIT versus DISALLOW_FILE_MODS

Qual utilizar DISALLOW_FILE_EDIT ou DISALLOW_FILE_MODS? Conheça a diferença entre as constantes e se dê bem com a segurança para WordPress.

Seus amigos merecem saber desse conteúdo?

Quando se trata de segurança para WordPress a constante DISALLOW_FILE_EDIT é comumente lembrada, já a sua concorrente DISALLOW_FILE_MODS é confundida, ignorada ou desconhecida. Afinal, qual devemos utilizar? Qual a diferença entre elas? Devo utilizar as duas?

De imediato a resposta é não para a última pergunta, e no decorrer deste artigo veremos em detalhes as respostas para os demais questionamentos e estenderemos o assunto para abordarmos o benefício de cada uma, como fazer o uso correto, como os desenvolvedores de plugins podem ser impactados e os tipos de ataques que elas previnem.

Sobre o editor de plugins e temas nativos do WordPress

DISALLOW_FILE_EDIT desabilitada

A imagem acima ilustra a localização do editor de temas e plugins na administração do WordPress. Essa funcionalidade é nativa e através dela é possível editar códigos PHP dos plugins e temas. Com ele é possível, também, além da edição dos códigos desses componentes, executar seus próprios códigos.

Por que desabilitar o editor de plugins e temas do WordPress

DISALLOW_FILE_EDIT em uso e Editor padrão de plugins e temas do WordPress desativado
DISALLOW_FILE_EDIT em uso e Editor padrão de plugins e temas do WordPress desativado

Convenhamos que usuários com pouco conhecimento técnico não deve ter a sua disposição uma funcionalidade como essa, é um risco para a segurança e perfeita funcionalidade da aplicação. A chance de fazer algo errado é real. Coisas simples como alterações de CSS requer um cuidado com a compatibilidade entre os navegadores de internet. A falta de um “;” (ponto e vírgula) após uma instrução PHP, por exemplo, paralisará o código.

Além disso se algum atacante conseguir acesso a sua conta ele poderá injetar códigos maliciosos facilmente através do editor. Essa funcionalidade é a primeira tentativa dos atacantes, uma vez que ela permite a execução de códigos PHP.

Se a disponibilidade do editor de temas e plugins do WordPress é perigoso para usuários não técnicos, se ele pode ser utilizado por atacantes para injetar códigos e considerando que os desenvolvedores organizam seus códigos de forma versionada, não há motivos para mante-lo.

Para ilustrar uma cenário clássico. Um atacante tem conhecimento do seu nome de usuário, veja como dificultar a descoberta. Através de um ataque de força bruta “descobre” sua senha e acessa a área administrativa com todos os privilégios. Com o editor disponível rodará seus códigos para os diversos fins: injetar bakdoors – saiba mais a respeito, enviar e-mails em massa, consultar as informações disponíveis no banco de dados e a lista continua.

Como desabilitar o editor de plugins e temas do WordPress

Desabilitar o editor de plugins e temas do WordPress é simples e requer o uso da constante DISALLOW_FILE_EDIT ou DISALLOW_FILE_MODS com o valor true no arquivo wp-config.php da sua instalação WordPress. Para exemplificar com códigos, teríamos algo assim:

define( 'DISALLOW_FILE_EDIT', true );

ou

define( 'DISALLOW_FILE_MODS', true );

A diferenca entre DISALLOW_FILE_EDIT e DISALLOW_FILE_MODS

Os nomes das constantes são bem sugestivos quanto as suas funcionalidades. A constante DISALLOW_FILE_EDIT vai proibir a edição de arquivos através do editor nativo do WordPress.

Com o uso da constante DISALLOW_FILE_EDIT o acesso a página do Editor é bloqueado
Com o uso da constante DISALLOW_FILE_EDIT o acesso a página do Editor é bloqueado

A constante DISALLOW_FILE_MODS implementa a mesma funcionalidade que a DISALLOW_FILE_EDIT, no entanto evita também que os plugins e temas sejam instalados e atualizados, bem como o próprio core do WordPress. Se você considerar o uso da constante DISALLOW_FILE_MODS seja responsável com o processo de atualização do WordPress e seus componentes, e não precisa utilizar em conjunto a constante DISALLOW_FILE_EDIT, uma vez que a primeira também implementa a funcionalidade da segunda.

Com o uso da constante DISALLOW_FILE_MODS o acesso a página de atualização da plataforma é bloqueado
Com o uso da constante DISALLOW_FILE_MODS o acesso a página de atualização da plataforma é bloqueado

Os tipos de ataques evitados ao fazer uso das constantes DISALLOW_FILE_EDIT e DISALLOW_FILE_MODS

Toda implementação de segurança ajuda a dificultar a vida do atacante e deixar seu site mais seguro. Fazer uso das constantes DISALLOW_FILE_EDIT ou DISALLOW_FILE_MODS ajuda prevenir que os atacantes possa executar seus códigos maliciosos caso ele ganhe acesso privilegiado ao painel administrativo do WordPress.

É uma camada adicional de proteção que somada as outras práticas de segurança vai ajudar seu WordPress ficar mais seguro e protegido.

As capacidades e o impactos para plugins e temas

O uso das constantes DISALLOW_FILE_EDIT ou DISALLOW_FILE_MODS impactará as capacidades dos usuários em relação as suas atividades de gestão. É importante ficar atento ao impacto causado para saber como lidar e antever possíveis impactos. Seja na gestão da plataforma, como no impacto aos plugins e temas em uso.

O uso da constante DISALLOW_FILE_EDIT é equivalente a remover de todos os usuários as capacidades (capabilities) edit_themes, edit_plugins e edit_files.

Já as capacidades update_plugins, delete_plugins, install_plugins, upload_plugins, update_themes, delete_themes, install_themes, upload_themes e upload_core são impactadas com o uso da constante DISALLOW_FILE_MODS.

Desenvolvedores de plugins e temas devem ficar atentos a essa questão. Se as capacidades citadas forem utilizadas é possível que elas não estejam disponíveis com o uso da constante. Esteja atento ao fato e se realmente seu plugin ou tema considerar o uso da verificação dessas capacidades considere exibir uma mensagem de alerta.

Qual utilizar DISALLOW_FILE_EDIT ou DISALLOW_FILE_MODS?

No mínimo uma delas você deve considerar o uso. A DISALLOW_FILE_MODS é mais restritiva e impacta o processo de instalação de temas e plugins, bem como suas atualizações e a do próprio WordPress. O tipo de projeto, de negócio e perfil dos usuários vai te balizar sobre caminho seguir. Conhecendo a funcionalidade e impacto de cada uma delas você tomará a decisão mais acertada.