# Segurança na transmissão de dados: Como criptografar requisições de CPF?

> Aprenda a criptografar requisições de CPF para garantir segurança na transmissão de dados sensíveis. Guia com TLS, HTTPS e boas práticas.

**Publicado:** 21/03/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/seguranca-transmissao-dados-criptografar-requisicoes-cpf

---


Toda requisição de CPF deve trafegar obrigatoriamente sobre HTTPS com TLS 1.2 ou superior. A chave de API deve ser enviada no header `x-api-key`, nunca na URL. O CPF não pode aparecer em texto puro nos logs da aplicação — use máscara nos três primeiros e dois últimos dígitos. Essas três medidas cobrem a maior parte dos vetores de vazamento em trânsito.

## Introdução

O CPF é um dado pessoal protegido pela LGPD, e sua transmissão pela internet exige cuidados rigorosos de segurança. Uma requisição mal configurada pode expor números de CPF em texto plano, criando vulnerabilidades que podem resultar em vazamentos de dados e penalidades legais. O [guia de segurança em APIs da OWASP](https://owasp.org/www-project-api-security/) lista a transmissão insegura de dados sensíveis entre as dez falhas mais críticas em APIs REST — e os cuidados descritos aqui endereçam diretamente esse risco.

---

## Camadas de proteção na transmissão de dados

A segurança na transmissão de dados sensíveis não depende de uma única tecnologia, mas de múltiplas camadas complementares:

| Camada | Tecnologia | Proteção oferecida |
|---|---|---|
| Transporte | TLS 1.2 / 1.3 | Criptografia ponto a ponto |
| Protocolo | HTTPS | Garante uso de TLS na web |
| Autenticação | API Key / OAuth | Controla quem acessa a API |
| Aplicação | Criptografia AES/RSA | Proteção adicional do payload |
| Rede | VPN / Private Link | Isolamento do tráfego |
| Armazenamento | Encryption at rest | Proteção dos dados salvos |

---

## Verificando a segurança da conexão com cURL

Antes de integrar qualquer API, valide que a conexão utiliza TLS adequado:

```bash
# Verificar versão do TLS e certificado
curl -v --tlsv1.2 \
 -H "x-api-key: SUA_CHAVE_AQUI" \
 "https://api.cpfhub.io/cpf/12345678909" 2>&1 | \
 grep -E "SSL|TLS|subject|issuer|expire"

# Testar se a API rejeita conexões inseguras (HTTP)
curl -v "http://api.cpfhub.io/cpf/12345678909" 2>&1 | \
 grep -E "redirect|301|302|Location"

# Verificar cipher suites aceitas
curl -s --tlsv1.3 \
 -H "x-api-key: SUA_CHAVE_AQUI" \
 "https://api.cpfhub.io/cpf/12345678909" | python3 -m json.tool

# Forçar TLS 1.3 (mais seguro)
curl -s --tls13-ciphers TLS_AES_256_GCM_SHA384 \
 -H "x-api-key: SUA_CHAVE_AQUI" \
 "https://api.cpfhub.io/cpf/12345678909"
```

---

## Implementando requisições seguras com Python

Configure o cliente HTTP para exigir padrões mínimos de segurança:

```python
import requests
import ssl
from urllib3.util.ssl_ import create_urllib3_context

class SecureCPFClient:
 def __init__(self, api_key: str):
 self.api_key = api_key
 self.session = requests.Session()

 # Configurar headers de segurança
 self.session.headers.update({
 "x-api-key": self.api_key,
 "Content-Type": "application/json",
 "User-Agent": "CPFClient/1.0 (Secure)",
 "Accept": "application/json"
 })

 # Timeout agressivo para evitar conexões penduradas
 self.timeout = (5, 10) # (connect, read) em segundos

 def consultar(self, cpf: str) -> dict:
 cpf_limpo = cpf.replace(".", "").replace("-", "")

 response = self.session.get(
 f"https://api.cpfhub.io/cpf/{cpf_limpo}",
 timeout=self.timeout,
 verify=True # Sempre validar certificado SSL
 )

 response.raise_for_status()
 dados = response.json()

 if dados["success"]:
 return {
 "cpf": self._mascarar_cpf(dados["data"]["cpf"]),
 "nome": dados["data"]["name"],
 "genero": dados["data"]["gender"],
 "nascimento": dados["data"]["birthDate"]
 }
 return None

 def _mascarar_cpf(self, cpf: str) -> str:
 """Mascara o CPF para logs seguros"""
 return f"{cpf[:3]}.***.**{cpf[-4:]}"

# Uso seguro
client = SecureCPFClient("SUA_CHAVE_AQUI")
resultado = client.consultar("123.456.789-09")
if resultado:
 print(f"CPF: {resultado['cpf']}") # Exibe: 123.***.**-09
 print(f"Nome: {resultado['nome']}")
```

---

## Boas práticas de segurança na transmissão

Adote estas práticas em todas as integrações que envolvam dados de CPF:

- **Sempre HTTPS** — nunca transmita CPFs via HTTP plano, mesmo em ambientes internos
- **Validar certificados** — não desabilite a verificação de certificados SSL, mesmo em desenvolvimento
- **Mascarar em logs** — registre apenas os 3 primeiros e 2 últimos dígitos do CPF nos logs da aplicação
- **Rotacionar chaves** — altere as chaves de API periodicamente e revogue chaves comprometidas imediatamente
- **Princípio do menor privilégio** — cada serviço deve ter sua própria chave com permissões mínimas necessárias

---

## Erros comuns que comprometem a segurança

Evite estas práticas que são frequentemente encontradas em códigos de produção:

- **Desabilitar SSL verify** — usar `verify=False` em Python ou `rejectUnauthorized: false` em Node.js elimina a proteção TLS
- **Logar CPF completo** — registrar o CPF inteiro em logs de aplicação cria pontos de vazamento
- **Chave de API no código fonte** — commitar chaves no repositório expõe credenciais para qualquer pessoa com acesso ao código
- **CPF na URL sem HTTPS** — parâmetros de URL podem ser logados por proxies e balanceadores em texto plano
- **Cache sem criptografia** — armazenar CPFs em cache Redis sem criptografia cria vulnerabilidade em caso de acesso não autorizado

---

## Perguntas frequentes

### Por que HTTPS não é suficiente por si só para proteger dados de CPF em trânsito?

HTTPS garante criptografia no transporte, mas não protege contra erros na camada de aplicação. A chave de API pode ser exposta em logs de proxy, o CPF pode aparecer em registros da aplicação em texto puro e certificados mal configurados podem ser ignorados com `verify=False`. A segurança completa exige TLS correto, validação de certificado ativa, máscara de CPF em logs e chaves de API armazenadas em variáveis de ambiente — não no código.

### Qual versão de TLS devo exigir nas requisições à API de CPF?

Use TLS 1.2 como mínimo absoluto e prefira TLS 1.3 sempre que possível. O TLS 1.0 e 1.1 foram oficialmente descontinuados e não devem ser aceitos. Na prática, configure o cliente HTTP para rejeitar qualquer versão anterior ao TLS 1.2 — a maioria das bibliotecas modernas já faz isso por padrão, mas é importante verificar explicitamente.

### Onde devo armazenar a chave de API para não expô-la?

A chave de API deve ser armazenada em variável de ambiente (`CPFHUB_API_KEY`) e nunca deve aparecer no código-fonte, em arquivos de configuração versionados ou em logs. Em produção, use um gerenciador de segredos como AWS Secrets Manager, HashiCorp Vault ou o mecanismo nativo da sua plataforma de deploy. Jamais commite arquivos `.env` com credenciais reais no repositório.

### O que fazer se suspeitar que a chave de API foi comprometida?

Revogue a chave imediatamente no painel da CPFHub.io em `app.cpfhub.io/settings/billing` e gere uma nova. Antes de revogá-la, revise os logs de auditoria para identificar consultas suspeitas — volume anormal, IPs desconhecidos ou horários fora do padrão. Após a troca, atualize todas as variáveis de ambiente e reinicie os serviços que dependiam da chave anterior.

### Leia também

- [Como logar e auditar todas as consultas de CPF feitas via API](https://cpfhub.io/blog/como-logar-e-auditar-todas-as-consultas-de-cpf-feitas-via-api)
- [Retenção de dados de CPF: por quanto tempo é permitido armazenar](https://cpfhub.io/blog/retencao-de-dados-de-cpf-por-quanto-tempo-e-permitido-armazenar)
- [Anonimização e pseudonimização de CPF: técnicas e quando aplicar](https://cpfhub.io/blog/anonimizacao-e-pseudonimizacao-de-cpf-tecnicas-e-quando-aplicar)
- [LGPD: CPF é dado pessoal sensível ou não? Entenda a classificação correta](https://cpfhub.io/blog/lgpd-cpf-e-dado-pessoal-sensivel-ou-nao-entenda-a-classificacao-correta)

---

## Conclusão

A segurança na transmissão de dados de CPF é uma responsabilidade de todas as camadas da aplicação, do transporte ao armazenamento. Implementar TLS corretamente, validar certificados, mascarar dados em logs e proteger chaves de API são medidas essenciais para conformidade com a LGPD e para evitar vazamentos que geram penalidades severas.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e integre consultas de CPF com segurança de ponta a ponta desde o primeiro dia.

