O que é este projeto
Privacy Shield BR é uma biblioteca PHP focada em detecção e anonimização de dados pessoais (PII) em textos, formulários, logs e bases de dados. Ela foi criada para ajudar empresas brasileiras a cumprir a LGPD sem reescrever seus sistemas do zero.
A abordagem é simples: você passa um texto ou array de dados, a biblioteca identifica automaticamente os campos sensíveis e retorna uma versão anonimizada preservando o formato original. Funciona com CPF, CNPJ, chaves PIX, e-mail, telefone, cartão de crédito e nomes próprios.
Detecção automática
O motor de detecção combina expressões regulares otimizadas com validação algorítmica. Não basta o formato parecer um CPF, a biblioteca valida o dígito verificador antes de classificar como dado pessoal.
- CPF, formato XXX.XXX.XXX-XX com validação de dígitos verificadores
- CNPJ, formato XX.XXX.XXX/XXXX-XX com validação completa
- Chaves PIX · CPF, CNPJ, e-mail, telefone e chave aleatória
- E-mail, detecção RFC 5322 com domínios válidos
- Telefone, fixo e celular com DDD, formatos brasileiro e internacional
- Cartão de crédito · Visa, Mastercard, Elo e Amex com validação Luhn
Exemplo: Padrões de detecção
Anonimização
A anonimização preserva o formato original do dado, mantendo a estrutura legível mas tornando impossível recuperar a informação real. Isso é essencial para logs de auditoria, relatórios e ambientes de homologação.
- Mascaramento parcial,
123.456.789-09vira123.***.***-09 - Substituição completa,
joao@email.comvira***@***.com - Tokenização, substitui por token reversível (para casos que exigem recuperação)
- Hash determinístico, mesmo dado gera mesmo hash (útil para joins em bases anonimizadas)
Exemplo: Uso da biblioteca
Conformidade LGPD
A biblioteca foi projetada para atender diretamente aos requisitos da Lei Geral de Proteção de Dados (Lei 13.709/2018). Cada funcionalidade mapeia para artigos específicos da lei:
- Art. 5o (Definições), a detecção classifica corretamente o que é dado pessoal, dado pessoal sensível e dado anonimizado, conforme os incisos I, II e III
- Art. 6o (Princípios), o método
redact()implementa o princípio da necessidade (inciso III), garantindo que apenas os dados estritamente necessários sejam mantidos - Art. 18 (Direitos do titular), o módulo de tokenização permite atender ao direito de eliminação (inciso VI) e ao direito de anonimização (inciso IV) sem quebrar a integridade referencial do banco de dados
- Art. 46 (Segurança), a anonimização em logs e relatórios atende à obrigação de adotar medidas técnicas para proteger dados pessoais
- Art. 48 (Incidentes), dados já anonimizados reduzem drasticamente o impacto de vazamentos, simplificando a comunicação à ANPD
Integração
A instalação é via Composer e a integração com qualquer projeto PHP leva menos de 5 minutos. Para Laravel, incluímos um middleware pronto que anonimiza automaticamente dados sensíveis nos logs da aplicação.
Instalação via Composer
Middleware para Laravel
Performance
A detecção é otimizada para processar grandes volumes de texto sem impacto perceptível na aplicação. Benchmarks em um servidor com 2 vCPUs e 4GB de RAM:
- 1.000 registros · 45ms (detecção + anonimização completa)
- 10.000 registros · 380ms com cache de padrões compilados
- 100.000 registros · 3.2s usando processamento em batch
As técnicas de otimização incluem:
- Regex compilado, padrões são pré-compilados e cacheados na inicialização
- Early exit, se o texto não contém dígitos, pula validação de CPF/CNPJ/cartão
- Batch processing, método
scanBatch()processa arrays em uma única passada - Lazy detection, modo que para no primeiro match (útil para validação rápida)
Como usar
Instale o pacote, configure as regras de detecção e integre no fluxo da sua aplicação. Cada projeto pode customizar quais tipos de dados detectar e qual estratégia de anonimização aplicar.
composer.json, dependência do pacoteconfig/privacy-shield.php, tipos habilitados, estratégia de mascaramento, exceçõesDetector, classe principal de detecção de PIIAnonymizer, classe de anonimização com múltiplas estratégiasMiddleware, integração automática com Laravel (opcional)