
Segurança e backups em PHP e MySQL: checklist essencial para empresas
Um website de empresa pode funcionar normalmente durante meses e, mesmo assim, ter riscos invisíveis: uma palavra-passe reutilizada, uma cópia de segurança nunca testada ou um formulário que aceita ficheiros perigosos. A segurança não depende de uma única ferramenta; depende de rotinas repetidas e de decisões técnicas consistentes.
1. Separe ambiente de produção e testes
As actualizações devem ser validadas antes de chegarem aos utilizadores. Mantenha um ambiente de teste com dados anonimizados, controlos de acesso próprios e configuração semelhante à produção. Evite executar testes que gerem documentos fiscais reais ou alterem informação sensível.
2. Actualize o PHP e as dependências
Utilize versões de PHP com suporte de segurança e verifique a compatibilidade da aplicação antes de migrar. Acompanhe as dependências de terceiros e remova bibliotecas e plugins que já não são utilizados. As actualizações devem fazer parte de um calendário de manutenção, com possibilidade de reversão.
3. Proteja o acesso à base de dados
No PHP, prefira PDO com consultas preparadas para valores vindos do utilizador. Por exemplo:
$stmt = $pdo->prepare('SELECT id FROM clientes WHERE email = ?');
$stmt->execute([$email]);
A conta da base de dados deve possuir apenas as permissões necessárias. Evite publicar ficheiros de configuração, cópias SQL e mensagens de erro que revelem credenciais. Mantenha as chaves fora do código partilhado e altere-as se houver indícios de exposição.
4. Organize backups que possam ser restaurados
Uma cópia só é útil quando é possível recuperá-la. Defina a periodicidade de acordo com a frequência das alterações, guarde cópias fora do servidor principal e proteja-as com controlo de acesso e cifragem adequada. Inclua ficheiros, base de dados e instruções de recuperação.
Faça testes de restauro em ambiente separado. Documente quanto tempo a recuperação demora e qual a quantidade máxima de dados que a empresa aceita perder. Estes dois objectivos ajudam a determinar a frequência e o tipo de backup.
5. Defenda formulários e uploads
Valide os campos no servidor, utilize tokens CSRF nas operações autenticadas e escape dados ao apresentá-los em HTML. Em uploads, limite tamanho e tipos permitidos, valide o conteúdo do ficheiro e guarde-o com um nome gerado pela aplicação. Não confie apenas na extensão indicada pelo navegador.
6. Configure sessões e permissões
Use palavras-passe armazenadas com funções de hash apropriadas, como password_hash() e password_verify(). Active cookies de sessão seguros, regere o identificador após o login e aplique permissões por função. Um utilizador responsável por publicar artigos não deve ter acesso livre à facturação ou às configurações críticas do servidor.
7. Monitorize sem expor informação pessoal
Registe alterações administrativas, tentativas de acesso e falhas de tarefas automáticas, mas limite os dados sensíveis nos logs. Configure alertas para erros recorrentes, espaço em disco insuficiente e backups falhados. Revise regularmente contas que já não precisam de acesso.
Checklist semanal
- Confirmar que o backup mais recente terminou com sucesso.
- Verificar erros da aplicação e do cron.
- Rever actualizações críticas e acessos administrativos.
- Confirmar disponibilidade de disco, HTTPS e certificados.
- Testar periodicamente o restauro e documentar os resultados.
Conclusão
A segurança melhora quando a equipa estabelece um processo contínuo: actualizar, limitar acessos, validar entradas, manter cópias e testar recuperações. Para uma pequena empresa, estas medidas reduzem a exposição a incidentes e ajudam a continuar a actividade quando surge um problema.
Artigo técnico preparado para publicação editorial. Autor: Santos António.