richardmsbr/privacy-shield-br
Composer 安装命令:
composer require richardmsbr/privacy-shield-br
包简介
Biblioteca PHP para detecção e anonimização de dados pessoais - LGPD/GDPR compliance. Detecta e mascara CPF, CNPJ, PIX, email, telefone automaticamente.
关键字:
README 文档
README
Biblioteca PHP para detecção e anonimização de dados pessoais - LGPD/GDPR compliance.
Detecta e mascara automaticamente CPF, CNPJ, PIX, email, telefone e cartão de crédito em strings, arrays e objetos. Otimizada para dados brasileiros.
Por que usar?
- LGPD Compliance: Anonimização conforme Lei Geral de Proteção de Dados
- Zero Configuração: Funciona out-of-the-box para dados brasileiros
- Validação Real: CPF e CNPJ são validados com algoritmo oficial (não apenas regex)
- Pseudonimização Consistente: Mesmo input = mesmo output (útil para FKs)
- Laravel Ready: ServiceProvider, Facade, Middleware e Trait inclusos
Instalação
composer require richardmsbr/privacy-shield-br
Laravel
O ServiceProvider é registrado automaticamente via auto-discovery.
Para publicar a configuração:
php artisan vendor:publish --tag=privacy-shield-config
Uso Rápido
Mascarar Dados
use PrivacyShield\Privacy; // String simples $texto = "Meu CPF é 123.456.789-09 e meu email é joao@email.com"; echo Privacy::mask($texto); // Output: "Meu CPF é ***.456.789-** e meu email é j***@e****.com" // Array $usuario = [ 'nome' => 'João Silva', 'cpf' => '123.456.789-09', 'email' => 'joao.silva@empresa.com.br', 'telefone' => '(11) 99999-8888', ]; print_r(Privacy::mask($usuario)); // Output: // [ // 'nome' => 'João Silva', // 'cpf' => '***.456.789-**', // 'email' => 'j***.s****@e******.com.br', // 'telefone' => '(11) *****-8888', // ]
Detectar Dados Sensíveis
use PrivacyShield\Privacy; $texto = "CPF: 123.456.789-09, Email: teste@email.com, Tel: 11999998888"; // Contagem simples $resultado = Privacy::scan($texto); // ['cpf' => 1, 'email' => 1, 'phone' => 1, 'total' => 3] // Verificação rápida if (Privacy::hasSensitiveData($texto)) { echo "ALERTA: Texto contém dados pessoais!"; } // Detalhes completos $detalhes = Privacy::scanDetailed($texto); // [ // ['type' => 'cpf', 'value' => '123.456.789-09', 'position' => 5], // ['type' => 'email', 'value' => 'teste@email.com', 'position' => 25], // ... // ]
Pseudonimização (Dados Falsos Consistentes)
use PrivacyShield\Privacy; $usuario = [ 'cpf' => '123.456.789-09', 'email' => 'joao@email.com', 'telefone' => '(11) 99999-8888', ]; // Pseudonimiza com seed (mesmo seed = mesmo resultado) $fake = Privacy::pseudonymize($usuario, 'user_123'); // [ // 'cpf' => '987.654.321-00', // CPF válido! // 'email' => 'maria.santos42@gmail.com', // 'telefone' => '(21) 98765-4321', // ] // Chamar novamente com mesmo seed = mesmo resultado $fake2 = Privacy::pseudonymize($usuario, 'user_123'); // Idêntico a $fake - útil para manter consistência em FKs
Remover Completamente (Redact)
use PrivacyShield\Privacy; $texto = "Cliente João, CPF 123.456.789-09, ligou às 14h"; echo Privacy::redact($texto); // Output: "Cliente João, CPF [REMOVIDO], ligou às 14h"
Integração Laravel
Facade
use PrivacyShield\Laravel\Facades\Privacy; // Mesmos métodos disponíveis Privacy::mask($dados); Privacy::scan($texto); Privacy::pseudonymize($dados);
Middleware
// routes/api.php // Mascara automaticamente respostas JSON Route::get('/users', [UserController::class, 'index']) ->middleware('privacy.mask'); // Sanitiza logs de requisição Route::post('/checkout', [CheckoutController::class, 'store']) ->middleware('privacy.log');
Trait Anonymizable em Models
use PrivacyShield\Laravel\Traits\Anonymizable; class User extends Model { use Anonymizable; // Define campos sensíveis (opcional - tem padrões) protected array $anonymizable = ['cpf', 'email', 'phone', 'name']; }
Uso:
$user = User::find(1); // Retorna cópia mascarada (não altera original) $masked = $user->masked(); echo $masked->cpf; // ***.456.789-** // Array mascarado $array = $user->toMaskedArray(); // Pseudonimiza (dados falsos consistentes) $fake = $user->pseudonymized(); // Direito ao Esquecimento (LGPD Art. 18) // CUIDADO: Altera e salva no banco! $user->forget(); // Verifica se tem dados sensíveis if ($user->hasSensitiveData()) { // ... }
Validação de CPF/CNPJ
A biblioteca valida CPF e CNPJ usando o algoritmo oficial (dígitos verificadores), não apenas regex:
use PrivacyShield\Detectors\Detector; $detector = new Detector(); // CPFs válidos são detectados $detector->isValidCpf('123.456.789-09'); // true $detector->isValidCpf('111.111.111-11'); // false (sequência inválida) $detector->isValidCpf('123.456.789-00'); // false (dígitos errados) // Mesma validação para CNPJ $detector->isValidCnpj('11.222.333/0001-81'); // true
Geração de Dados Falsos Válidos
A pseudonimização gera dados que passam em validações:
use PrivacyShield\Pseudonymizer; $pseudo = new Pseudonymizer(); // Gera CPF válido $cpf = $pseudo->generateFakeCpf('seed_123'); // 847.293.156-04 (válido!) // Gera CNPJ válido $cnpj = $pseudo->generateFakeCnpj('seed_123'); // 84.729.315/0001-60 (válido!) // Gera nome brasileiro $nome = $pseudo->generateFakeName('seed_123'); // "Fernanda Oliveira" // Gera email realista $email = $pseudo->generateFakeEmail('seed_123'); // "fernanda.oliveira42@gmail.com" // Gera telefone com DDD válido $tel = $pseudo->generateFakePhone('seed_123'); // "(11) 98472-9315"
Configuração
// config/privacy-shield.php return [ // Caractere de máscara 'mask_char' => '*', // Texto para redação completa 'redact_text' => '[REMOVIDO]', // Detectores ativos 'detectors' => [ 'cpf' => true, 'cnpj' => true, 'email' => true, 'phone' => true, 'pix' => true, 'credit_card' => true, ], // Mascarar domínio do email 'mask_email_domain' => true, // Log de requisições sanitizadas 'log_requests' => false, ];
LGPD Compliance
Esta biblioteca ajuda a cumprir os seguintes artigos da LGPD:
| Artigo | Requisito | Como a biblioteca ajuda |
|---|---|---|
| Art. 5º | Definição de dado pessoal | Detecta automaticamente dados pessoais |
| Art. 6º | Princípio da necessidade | Permite mascarar dados desnecessários |
| Art. 12 | Anonimização | Métodos mask() e redact() |
| Art. 18 | Direito ao esquecimento | Método forget() no Trait |
| Art. 46 | Medidas de segurança | Previne vazamento em logs/APIs |
Casos de Uso
1. Logs Seguros
// Antes (ERRADO - vaza dados) Log::info('Usuário criado', $request->all()); // Depois (CORRETO) Log::info('Usuário criado', Privacy::mask($request->all()));
2. Ambiente de Desenvolvimento
// Copia produção para dev com dados anonimizados $users = User::all(); foreach ($users as $user) { $user->cpf = Privacy::pseudonymize($user->cpf, $user->id); $user->email = Privacy::pseudonymize($user->email, $user->id); $user->save(); }
3. Export de Dados
// API que retorna dados mascarados return response()->json(Privacy::mask($usuarios));
4. Atendimento ao Cliente
// Atendente vê dados parciais $cliente = Cliente::find($id)->masked(); echo "CPF: {$cliente->cpf}"; // ***.456.789-**
Tipos de Dados Detectados
| Tipo | Exemplo | Mascarado |
|---|---|---|
| CPF | 123.456.789-09 | ***.456.789-** |
| CNPJ | 12.345.678/0001-90 | **.345.678/****-** |
| joao@email.com | j***@e****.com | |
| Telefone | (11) 99999-8888 | (11) *****-8888 |
| Cartão | 4111 1111 1111 1111 | **** **** **** 1111 |
| PIX (chave) | abc12345-1234-... | abc1********5678 |
Requisitos
- PHP 8.1+
- Laravel 10+ (opcional, para integração)
Contribuindo
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie sua branch (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Licença
MIT License - veja LICENSE para detalhes.
Autor
Richard - @richardmsbr
Links
Author
Richard Sakaguchi - Solution Architect & AI Engineer
- Website: sakaguchi.ia.br
- SEO Tools: seoexpress.com.br
- HuggingFace: yoshii-ai
- LinkedIn: richard-ms
richardmsbr/privacy-shield-br 适用场景与选型建议
richardmsbr/privacy-shield-br 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「brazil」 「privacy」 「cpf」 「cnpj」 「anonymization」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 richardmsbr/privacy-shield-br 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 richardmsbr/privacy-shield-br 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 richardmsbr/privacy-shield-br 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Make TYPO3 more compatible to GDPR
PHP extension with Brazilian states and formats for CPF, CNPJ and ZIP
A FilamentPHP plugin that validates Brazilian postal codes (CEP) and automatically fills address fields (street, neighborhood, city, state, country) using ViaCEP as the primary source, with multiple API fallbacks for reliability.
Strips potentially identifying information from outbound requests to the WordPress.org API
Use Klaro! Consent Manager in Contao CMS
This bundle contains functionality concerning privacy and the European Union's "General Data Protection Regulation" (GDPR, in German: "Datenschutz-Grundverordnung", DSGVO).
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 46
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-29