Dezesseis dicas de segurança para desenvolvedores de plugins e temas do WordPress

Publicados: 2021-10-19

Nunca se pode ser muito cuidadoso!

Uma grande parte do nosso trabalho como desenvolvedores é garantir que os sites e plugins que estamos construindo sejam seguros.

As empresas precisam de soluções mais rápidas com funcionalidades cada vez mais complexas. Embora isso seja um bom progresso, a construção de projetos complexos também exige uma configuração de segurança adequada. A segurança do WordPress é um dos aspectos mais importantes do desenvolvimento de sites.

Com a crescente complexidade dos recursos, muitos desenvolvedores perdem os princípios básicos de segurança de desenvolvimento de sites e aplicativos da Web. Isso resulta em um site falho que está aberto a ataques cibernéticos e outros riscos.

Portanto, é essencial que você implemente alguns protocolos básicos de segurança de desenvolvimento de sites e aplicativos da Web ao criar seu projeto.
Abaixo estão 16 dicas de segurança para desenvolvedores da Web que ajudarão a manter seu site seguro.

1. Descubra quais dados precisam de proteção

Um dos princípios de segurança de desenvolvimento de sites mais importantes é que você precisa apenas armazenar os dados necessários.
Quando você está desenvolvendo um projeto, você precisa fazer estas três perguntas:

  • Quais dados a empresa precisa armazenar?
  • Quais dados confidenciais a empresa precisa criptografar?
  • Se, por algum motivo, os dados forem comprometidos, quanto isso pode prejudicar a empresa?

Quanto mais dados confidenciais você armazenar, maior o risco de exposição. Se você precisar armazenar os dados confidenciais, precisará criptografá-los para dificultar o acesso.

2. Implementar o gerenciamento de funções e controle de acesso

Ao projetar um site, plugin ou tema, é importante dar aos usuários os privilégios mais baixos possíveis.

Os privilégios devem ser limitados para que o usuário receba apenas o que precisa e não possa acessar outras áreas.

Por exemplo, os contribuidores devem ser restritos a criar novas postagens e páginas, mas não publicá-las. Os editores devem ser capazes de criar novas postagens e publicá-las, mas não podem alterar o design ou os plugins.

Da mesma forma, ao desenvolver uma funcionalidade específica em seu plugin ou tema que você deseja restringir, certifique-se de criar novas funções de usuário do WordPress durante a instalação. Informe os administradores sobre eles, para que as funções corretas sejam atribuídas aos respectivos usuários que usarão o plug-in ou tema que você está desenvolvendo.

Aqui está uma representação pictórica rápida de como a estrutura se parece.

Estrutura de gerenciamento de funções e controle de acesso

Essa abordagem minimiza os problemas porque podemos limitar quanto dano um intruso pode causar. Você também pode limitar os danos causados ​​por erros ou enganos de um usuário curioso mexendo em áreas de um site que eles realmente não deveriam estar.

Você também precisa restringir o acesso dentro da equipe de desenvolvimento dependendo de sua função.

3. Aplicar autenticação

A autenticação do site é o processo de segurança que permite aos usuários verificar suas identidades para obter acesso a áreas restritas de um site.

Ao desenvolver um tema ou plugin, você terá certos dados que precisam ser restritos enquanto alguns dados estão visíveis para os usuários. Portanto, é importante adicionar verificações no código para verificar se o usuário que acessa os dados restritos está autenticado e possui a função de usuário correta.

Da mesma forma, ao criar um site, você pode implementar práticas eficazes de gerenciamento de contas, como aplicação de senha forte e autenticação multifator para proteger os dados do usuário.

A autenticação de dois fatores é uma das formas mais populares de implementar a autenticação.

A autenticação de dois fatores (2FA) é um processo de duas etapas no qual você precisa de um código adicional ou senha de uso único (OTP) para fazer login no seu site, além da senha do site. Esse OTP geralmente é enviado para outro dispositivo por meio de mensagem de texto, chamada telefônica ou um aplicativo 2FA reconhecido, como Google Authenticator, Authy, Duo Security e muitos outros. A implementação do 2FA mantém você protegido contra ataques de força bruta.

Se você está construindo seu site no WordPress, confira essas ferramentas incríveis que permitem proteger seu site.

  • Limitar tentativas de login: Esta ferramenta mantém você protegido contra ataques de força bruta, limitando o número de tentativas de login. Também inclui anti-spam e logout de usuário inativo automatizado.
  • WP2 FA: O plugin WP2FA permite que você adicione autenticação de dois fatores ao seu site em um instante. Ele também suporta vários aplicativos 2FA, como Google Authenticator, Authy, FreeOTP, Duo Security e vários outros.
  • Shield Security: Este plug-in não suporta aplicativos 2FA, como Google Authenticator e SMS 2FA, mas é útil para quem está usando o YubiKey.
  • WPassword: Este plugin ajuda você a impor senhas fortes para o seu site WordPress, bloquear usuários com muitas tentativas de login com falha e muito mais. Ele se integra perfeitamente ao WooCommerce e outros plugins de terceiros.

4. Verifique seu tema ou plugin antes de liberá-lo

Antes de um tema ou plugin ser lançado, você precisa garantir que seu código seja o mais livre de erros possível. Você pode usar determinadas dependências do compositor para detectar qualquer vulnerabilidade em seu código.

Algumas das dependências recomendadas para sites WordPress são:

  • Wpthemereview
  • Padrões de codificação Wp

Esses padrões de codificação têm regras de codificação rígidas, como sempre escapar dos dados antes de imprimi-los, usar nonce para todas as solicitações, limpar os dados da solicitação antes de usá-los, fornecer permissões de usuário adequadas e muito mais para ajudar a proteger seu código.

Essas ferramentas são ótimas se você estiver desenvolvendo seu próprio tema ou plugin.

Você também deve verificar o WPScan Security Scanner. É um ótimo scanner de segurança de sites on-line que verifica se há vulnerabilidades em seu site.

5. Evite Certas Funções do PHP

Certas funções PHP como eval() e unserialize(), podem expor dados do sistema e podem levar à exposição dos dados do servidor, o que pode causar o desligamento do servidor ou o acesso a todas as informações do servidor pelo hacker.

Aqui estão algumas funções do PHP que você deve evitar sempre que possível:

eval() : eval pode executar código PHP arbitrário. Pode expor seus códigos a ataques de injeção se não for usado corretamente.

serialize() ou unserialize(): Não use serialize() ou unserialize() com entrada fornecida pelo usuário. Os invasores podem explorar essas funções. Eles podem passar uma string com um objeto arbitrário serializado para executar código arbitrário.

md5() : A internet está cheia de comentários sobre as fraquezas criptográficas do md5() 1 e é considerado inseguro. Use uma função de hash melhor, como SHA-2.

sha1() : sha1() é outra função de hash que não deve ser usada devido à natureza rápida dos algoritmos de hash. Recomenda-se usar o algoritmo de hash SHA-2 no lugar de md5() em qualquer estrutura moderna.

6. Use linters para encontrar problemas no código

Uma ferramenta lint é um analisador de código estático básico que verifica seu código-fonte quanto a erros programáticos e estilísticos. O tom de voz de saída de Linter deve ser amigável para manter o projeto avançando.

Os códigos Lint são uma ótima maneira de encontrar vulnerabilidades em potencial e reduzir erros durante o desenvolvimento de um site ou aplicativo. Você pode usar certos linters de segurança para desenvolvimento PHP, JS e HTML.

Aqui estão algumas ferramentas notáveis ​​para a análise estática de seus códigos PHP:

  • PHP-Parallel-Lint
  • SonarLint
  • Salmo
  • PHP Lint

Você também pode usar o SonarLint para HTML e Javascript.

Outros linters JS notáveis ​​são:

  • JS Lint
  • Fio ES

7. Remova o código e os plugins não utilizados

Com software cada vez mais complexo, o potencial de vulnerabilidades no código também aumenta. Temas e plugins do WordPress não são diferentes. Os recursos cada vez maiores de códigos como HTML5, CSS e JavaScript permitem que os desenvolvedores criem aplicativos da Web avançados.

No entanto, as crescentes complexidades dos aplicativos são uma faca de dois gumes. Enquanto eles ajudam a entregar os recursos que os usuários esperam, eles também expandem a superfície de ataque do aplicativo. Uma medida para lidar com essa vulnerabilidade é remover o código que não é usado.

Usuários diferentes podem não precisar de todos os recursos de um site ou aplicativo da web. Ao remover recursos desnecessários com base nos requisitos do usuário em cada implantação, você pode reduzir as superfícies de ataque e o risco associado.

Se você gosta de desenvolver sites no WordPress, recomendamos usar temas e plugins que atendam às suas necessidades e sejam leves em termos de código. Eles não apenas mantêm seu site seguro, mas também ajudam na otimização do mecanismo de pesquisa. Aqui estão alguns dos melhores temas WordPress leves e rápidos disponíveis.

8. Use a validação do lado do servidor e do lado do cliente

Se você é alguém que adora escrever códigos personalizados, é essencial usar a validação do lado do cliente e do lado do servidor. A validação do lado do cliente ajuda a proteger contra erros comuns do usuário, como inserir dados incorretamente ou esquecer campos. Essa validação captura dados inválidos antes que eles cheguem ao servidor, economizando tempo e dinheiro.

Imagine, se a validação do lado do cliente ocorrer apenas após uma ida e volta ao servidor falhar, você enfrentará atrasos dizendo aos usuários o que eles fizeram de errado sem permitir que eles corrijam seus erros imediatamente.

No entanto, a validação do lado do cliente por si só não é suficiente como medida de segurança. Você também precisa usar a validação do lado do servidor. A validação do lado do servidor protege você contra entradas maliciosas e outros vetores de ataque.

9. Higienize qualquer entrada do usuário e solicite dados

A sanitização de entrada do usuário é uma medida de segurança cibernética de auditoria, limpeza e filtragem de dados de usuários e APIs de qualquer caractere e strings não autorizados ou indesejados para evitar a injeção de código prejudicial no sistema.

Os hackers podem injetar comandos específicos e executar ações que podem comprometer a segurança do seu site. A sanitização de entrada ajuda a manter a integridade dos dados e melhora a segurança do sistema.

10. Aplique correções permanentes

Ao realizar uma verificação de segurança, você pode notar algumas vulnerabilidades que reaparecem de tempos em tempos. Você precisa determinar a causa raiz das novas vulnerabilidades para poder erradicá-las permanentemente em vez de adicionar um patch parcial.

Por exemplo, muitas vezes você pode encontrar problemas de SQL/XSS no tema ou plugin que você desenvolve. Nesse caso, em vez de construir uma verificação de sanitização para cada entrada, construa uma função/classe e faça uma política de que sempre que houver entrada do usuário, todos os dados devem ser passados ​​por essa classe/função.

11. Evite configurações incorretas e padrões de segurança

As configurações incorretas de segurança ocorrem quando as configurações de segurança não são definidas e implementadas e os valores padrão são mantidos. Deixar de implementar controles de segurança ou implementá-los com erros pode aumentar a probabilidade de haver vulnerabilidades no tema, plug-in ou site que você cria.

A configuração incorreta geralmente acontece porque um sistema, administrador de banco de dados ou desenvolvedor não configurou corretamente a estrutura de um aplicativo, levando a caminhos abertos perigosos para hackers.

Certifique-se de que a configuração padrão seja segura e não defina senhas automaticamente (se necessário). Por exemplo, se o plug-in usar um diretório no qual os usuários podem fazer upload de arquivos, sempre peça aos usuários que definam suas senhas e o caminho do diretório.

12. Mantenha-se informado e atualizado

A cibersegurança é um campo em constante evolução. Você precisa estar ciente das atualizações de segurança mais recentes e dos riscos emergentes para poder acompanhar os desenvolvimentos e mitigar ameaças novas e emergentes em seu código.

Como desenvolvedor, ajuda a manter-se informado sobre as notícias e escrever código mais seguro, quais são as melhores práticas para proteger a codificação, higienizar melhor o código e lidar melhor com a entrada do usuário.

Para fazer isso, siga especialistas online e mantenha-se atualizado com seu blog de desenvolvimento web favorito. Você já está lendo este. Então você está começando bem.

Aqui estão alguns dos melhores recursos sobre segurança do WordPress.

  • WP White Security blog
  • Blog do WordFence
  • blog Sucuri

13. Manter o código

O código que você escreve hoje pode não estar seguro amanhã. Novas variantes de vulnerabilidade continuam surgindo e ele também precisa de atualizações constantes por parte de um desenvolvedor.

À medida que você adiciona novas funcionalidades a um plugin ou tema, verifique se isso não afeta a segurança de outros módulos ou classes ou funções no código. Caso isso aconteça, você precisa atualizar o código para corrigir os problemas.

Você também pode usar ferramentas como o GitHub para manter o código do seu tema ou plugin. Isso ajudará você a rastrear o código e corrigir problemas mais rapidamente. A segurança sempre evolui. Para acompanhar as últimas tendências, é essencial renovar constantemente seus testes de segurança para encontrar vulnerabilidades e melhorá-las.

14. Atualize seus pacotes de software regularmente

É um acéfalo.

Manter seus pacotes de software como PHP, Javascript, HTML e outros atualizados ajuda a resolver novos problemas de segurança. Melhorar a segurança do software é sempre uma preocupação constante e, para isso, sempre nos mantemos atualizados com a versão mais recente desse software.

15. Colabore com sua equipe

Anote os tíquetes de segurança que são enviados à sua equipe de suporte. Se seus clientes relatarem quaisquer problemas de segurança, priorize resolvê-los. Seu usuário final dá o melhor feedback sobre seu trabalho, então use-o bem!

Discuta os problemas de segurança com a equipe de desenvolvimento e certifique-se de que qualquer patch que você desenvolver corrija o problema de segurança e não quebre mais nada antes de torná-lo público. Se você precisar colaborar frequentemente com colegas de equipe ou trabalhar com grandes clientes que têm departamentos inteiros envolvidos com suporte, é uma boa ideia usar um software de webinar para facilitar o processo.

16. Prepare-se para o pior cenário

Você não pode ser muito cuidadoso. A web e qualquer coisa publicada na web nunca podem ser 100% seguras. No entanto, você pode tomar medidas que podem ajudar a mitigar os riscos.

A chave é avaliar as vulnerabilidades potenciais e desenvolver uma resposta de risco apropriada com medidas de segurança adequadas. Novas técnicas de ataque aparecem com frequência, portanto, as melhores práticas também devem evoluir como parte desse processo.

Por exemplo, se um site WordPress for invadido, o plano de contingência deve incluir o que fazer em caso de invasão. Isso precisaria conter métodos de backup, o processo de limpeza e as etapas necessárias para reconstruir o site e restaurar o serviço.

Esse plano permitirá que todas as partes interessadas consertem as coisas rapidamente sem serem sobrecarregadas pela sobrecarga de informações ou reagirem exageradamente com ações desnecessárias.

Pensamentos finais

O que mais você pode fazer para melhorar a segurança do seu tema ou plugin? Bem, muitas coisas. Você vê, escrever código seguro não é uma coisa única. As tecnologias evoluem e os métodos de ataque evoluem com ela.

A realidade é que você não pode impedir todos os ataques cibernéticos ou mitigar todos os riscos concebíveis. Seu objetivo deve ser fazer o máximo possível com o que você tem e revisitar constantemente seu código para melhorá-lo.

Construa um plano de segurança bem definido para o seu site e esteja preparado para enfrentar o pior. Certifique-se de considerar os tickets ou relatórios relacionados à segurança como a prioridade mais alta.

Publique uma postagem de blog ou anúncio em sua comunidade informando que você lançou uma correção de segurança para que todos os usuários possam atualizar e evitar que seus sites sejam comprometidos.

A segurança cibernética não é muito diferente de uma estratégia militar. A chave é a preparação! Espero que este post tenha ajudado você com sua preparação. Deixe-nos saber nos comentários, quais medidas você toma para melhorar a segurança do seu site.

Referências usadas neste artigo [ + ]

Referências usadas neste artigo
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C