CI4 SQLite Logger 🛡️
Biblioteca de alta integridade e auditoria estruturada para o framework CodeIgniter 4. Projetada para substituir arquivos de texto planos (.log) por bancos relacionais SQLite rotativos criptograficamente encadeados.
Ao desenvolver esta biblioteca e conceber seu funcionamento, dedicamos anos de estudo e aplicamos os conhecimentos adquiridos em nossa prática profissional. Quando a equipe de programação da Meu Sistema inicia qualquer projeto, submetemos-nos a um extenso e rigoroso processo de ambientação. Todos os engenheiros e projetistas participam de treinamentos presenciais, testes de frameworks, discussões e diversas reuniões de alinhamento, garantindo que todos os envolvidos no projeto compreendam seu funcionamento integral.
Ao embarcarmos em mais um projeto com a assinatura da Meu Sistema, nos deparamos com a necessidade premente de garantir rastreamento, confiabilidade e uma cadeia de custódia robusta. No âmbito da perícia digital, a execução completa do processo de cadeia de custódia e a obtenção de provas digitais que sejam totalmente confiáveis e impugnáveis pela defesa adversária representam um desafio significativo. Este desafio não reside apenas na expertise do perito, mas também na qualidade e confiabilidade dos equipamentos utilizados, do software empregado, das APIs integradas e dos logs gerados durante o processo. Cada um desses elementos desempenha um papel crucial na construção de um caso digital sólido e defensável. A Meu Sistema se compromete a fornecer as ferramentas e o suporte necessários para que nossos peritos possam superar esses desafios com sucesso, garantindo a integridade e a confiabilidade das provas digitais apresentadas.
Após uma extensa e minuciosa pesquisa, constatamos que não existe nenhuma biblioteca de código aberto disponível no mercado que atinja o nível de segurança excepcional proporcionado por esta biblioteca. Essa biblioteca se destaca por sua capacidade de atingir um alto grau de segurança utilizando componentes pequenos e simples, sem a necessidade de hardware sofisticado ou de alto desempenho. Diante desse cenário, e em comemoração à entrega bem-sucedida do projeto, fizemos uma promessa ao nosso cliente: desenvolveríamos uma biblioteca que não apenas atendesse às suas necessidades específicas, mas também demonstrássemos, de forma transparente e ao vivo, todo o processo de segurança em ação. Essa demonstração ao vivo visa proporcionar ao cliente total confiança na eficácia e robustez da biblioteca, garantindo que suas informações estejam protegidas com o mais alto nível de segurança disponível. Nosso compromisso é com a excelência e a satisfação do cliente, e estamos dedicados a entregar uma solução que supere suas expectativas e atenda às suas demandas mais exigentes.
Desenvolvemos a biblioteca “CI4 SQLite Logger”, a qual foi prontamente disponibilizada no GitHub para a comunidade de desenvolvedores. Ao longo do tempo, dedicamos esforços contínuos para aprimorar e adaptar a biblioteca, garantindo sua robustez e confiabilidade. Com o objetivo de facilitar ainda mais a integração e o uso da biblioteca, assim que alcançamos uma versão totalmente confiável e auditável, publicamos-na no Composer, um gerenciador de pacotes amplamente utilizado no ecossistema PHP. Simultaneamente, tornamos o repositório da biblioteca público, marcando o início oficial de sua utilização e adoção pela comunidade. Após a implementação bem-sucedida da biblioteca em nosso próprio caso de uso, sentimos a responsabilidade de demonstrar a eficácia dos processos de auditoria que ela proporciona. Em uma demonstração prática, explicamos detalhadamente que a utilização desta biblioteca garante a integridade dos registros armazenados, tornando impossível a alteração de qualquer dado sem a quebra da cadeia de hashes. Este mecanismo assegura que qualquer modificação nos registros seja detectada imediatamente, proporcionando um alto nível de segurança e confiabilidade para aplicações que dependem de auditoria rigorosa e rastreabilidade de dados.
O script, em sua implementação inicial, executa a criação de um nó de hash criptográfico robusto, utilizando para isso APIs de segurança do sistema operacional (SO) ou bytes seguros aleatórios. Essa operação fundamental estabelece o primeiro elo da corrente de custódia, uma estrutura criptográfica projetada para garantir a integridade e a segurança dos dados armazenados. Uma vez estabelecido, este elo inicial torna-se inalterável e inquebrável, constituindo a base sólida sobre a qual toda a cadeia de custódia é construída. A integridade desta corrente é de suma importância, pois qualquer quebra ou corrupção do elo inicial compromete a segurança e a confiabilidade de toda a cadeia.
Consequentemente, uma cadeia de nós que tenha sofrido tal quebra ou corrupção torna-se inútil para fins de auditoria ou comprovação de provas, visto que sua funcionalidade e segurança foram comprometidas. Portanto, a criação do nó inicial com o máximo rigor e segurança é essencial para garantir a eficácia e a confiabilidade da cadeia de custódia como um todo.
Por que trocar logs em texto por SQLite?
Arquivos tradicionais de log em texto puro (.log) apresentam vulnerabilidades graves de segurança e limitações de escala em ambientes de produção:
- Adulteração Silenciosa: Se um atacante obtiver privilégios no servidor, linhas de log podem ser apagadas ou alteradas sem deixar vestígios.
- Leitura Ineficiente: Fazer buscas por data, nível de erro ou usuário em arquivos de texto de centenas de megabytes exige comandos pesados de I/O (
grep,awk,sed). - Concorrência: Escritas concorrentes frequentes geram bloqueios ou corrupção de arquivos planos.
O CI4 SQLite Logger soluciona esses problemas gravando eventos diretamente em tabelas relacionais SQLite indexadas, implementando verificação matemática de custódia e execução em modo WAL (Write-Ahead Logging).
Recursos Principais
1. Corrente de Custódia (Hash Chain SHA-256)
Cada evento gravado calcula um hash criptográfico baseado no hash da linha imediatamente anterior combinado aos dados atuais:
{Hash Atual} = {SHA256}{Hash Anterior} + {UUID} + {Nível} + {Mensagem} + {IP} + {Contexto} + {Protobuffers}
Se qualquer registro for excluído ou editado manualmente via terminal ou injeção, a cadeia se rompe, invalidando o banco de dados perante perícias digitais.
2. Banco de Dados Rotativo Automático
Monitoramento contínuo do tamanho do arquivo .db. Ao atingir o teto parametrizado (padrão de 10 MB), o arquivo atual é rotacionado de forma atômica e um novo banco é iniciado sem derrubar a aplicação.
3. Modo Performance (Write-Ahead Logging)
Configurado com PRAGMA journal_mode = WAL;, permitindo que leituras e escritas aconteçam simultaneamente em threads distintas sem causar gargalos (database locked).
4. Metadados e Trilha Forense
Captura automática de:
- Endereço IP do cliente (compatível com IPv4 e IPv6).
- Porta remota de conexão (
REMOTE_PORT). - User-Agent detalhado (navegador, dispositivo e sistema operacional).
- Identificador único universal (UUIDv4) por linha de log.
- Metadados de segurança para prevenir a substituição física do arquivo do banco.
Requisitos do Ambiente: PHP 8.1+, extensão
ext-sqlite3habilitada e CodeIgniter 4.x instalado.
Apoiado e mantido por
Meu Sistema - Sistemas online personalizados
Acesse: https://meusistema.com.br
Fale conosco em: contato[at]meusistema.com.br