Verifique a entrada do usuário em busca de PII antes de armazená-la com uma chamada de API
Detecte e edite e-mails, números de telefone, SSNs, cartões de crédito e endereços IP em texto antes que cheguem ao seu banco de dados. API gratuita de detecção de PII sem necessidade de conta.
Um cliente envia um ticket de suporte e cola o número do cartão de crédito na descrição. Um usuário preenche um formulário de feedback e inclui seu número de Seguro Social. Uma ferramenta interna registra o corpo completo da solicitação e agora seu agregador de log armazena endereços de e-mail e números de telefone que você nunca pediu.
Esta é a forma mais comum pela qual as empresas coletam informações de identificação de que não precisam. Não é uma solicitação de recurso deu errado; é a entrada de texto livre fazendo o que a entrada de texto livre faz. E nos termos do Artigo 5(1)(c) do GDPR, armazenar dados pessoais desnecessários viola o princípio de minimização de dados.
A solução: verifique o texto em busca de PII *antes* de chegar ao seu banco de dados. Uma chamada de API captura e-mails, números de telefone, SSNs, números de cartão de crédito, endereços IP e datas de nascimento.
Uma chamada de API para detectar PII
Envie qualquer texto para o /v1/pii/detect ponto final. A API verifica e retorna todos
PII corresponde ao seu tipo, posição e uma versão mascarada.
curl -X POST https://api.botoi.com/v1/pii/detect \\
-H "Content-Type: application/json" \\
-d '{
"text": "My name is John Smith, call me at 555-123-4567 or email john@example.com"
}'
Resposta:
{
"success": true,
"data": {
"found": true,
"count": 3,
"findings": [
{
"type": "email",
"value": "john@example.com",
"start": 56,
"end": 72,
"masked": "j***@e******.com"
},
{
"type": "phone",
"value": "555-123-4567",
"start": 37,
"end": 49,
"masked": "***-***-4567"
}
]
}
}
A API encontrou dois itens PII na entrada: um endereço de e-mail e um número de telefone. Cada descoberta inclui
as posições dos personagens (start e end) para que você possa substituir, redigir,
ou sinalize a substring exata.
Tipos de PII suportados
Type Example match Masked output
───────────── ───────────────────────── ─────────────────────
email john@example.com j***@e******.com
phone 555-123-4567 ***-***-4567
ssn 123-45-6789 ***-**-6789
credit_card 4111111111111111 ************1111
ip_address 192.168.1.42 ***.***.***.42
date_of_birth 1990-05-15 ****-**-15
Todo tipo retorna um masked versão que preserva contexto suficiente para identificar o
categoria de dados sem expor o valor total.
Construa um scanner de pré-armazenamento
O ponto de integração de maior valor é logo antes de você gravar a entrada do usuário em seu banco de dados. Este exemplo do Node.js verifica os campos do ticket de suporte e rejeita envios que contenham PII.
import express from "express";
const app = express();
app.use(express.json());
async function detectPII(text) {
const res = await fetch("https://api.botoi.com/v1/pii/detect", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text }),
});
return res.json();
}
app.post("/support-tickets", async (req, res) => {
const { subject, body } = req.body;
// Scan both fields before saving
const subjectScan = await detectPII(subject);
const bodyScan = await detectPII(body);
if (subjectScan.data.found || bodyScan.data.found) {
const allFindings = [
...(subjectScan.data.findings || []),
...(bodyScan.data.findings || []),
];
return res.status(422).json({
error: "PII detected in submission",
findings: allFindings.map((f) => ({
type: f.type,
masked: f.masked,
})),
});
}
// Safe to store; no PII found
await saveTicket({ subject, body });
res.status(201).json({ created: true });
});
Quando um usuário envia um ticket contendo PII, ele recebe uma resposta 422 listando o que foi encontrado (usando valores mascarados, não os dados brutos). Eles podem remover as informações confidenciais e reenviá-las. Seu banco de dados nunca vê as PII.
Essa abordagem funciona para qualquer formulário: formulários de contato, pesquisas de feedback, sistemas de comentários, notas internas. Em qualquer lugar que os usuários digitem texto livre, PII podem aparecer.
Editar antes de registrar
A rejeição de PII funciona para formulários voltados para o usuário. Mas para registros, mensagens de erro e trilhas de auditoria, você deseja manter o texto enquanto remove as partes sensíveis. Esta função substitui cada PII corresponde à sua versão mascarada.
async function redactPII(text) {
const res = await fetch("https://api.botoi.com/v1/pii/detect", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text }),
});
const { data } = await res.json();
if (!data.found) return text;
// Replace each finding with its masked version
let redacted = text;
// Process findings from end to start so positions stay valid
const sorted = [...data.findings].sort((a, b) => b.start - a.start);
for (const finding of sorted) {
redacted =
redacted.slice(0, finding.start) +
finding.masked +
redacted.slice(finding.end);
}
return redacted;
}
// Usage
const logMessage = "User john@example.com reported issue from 192.168.1.42";
const safe = await redactPII(logMessage);
console.log(safe);
// "User j***@e******.com reported issue from ***.***.***.42"
A função processa as descobertas do final da string para trás. Isso mantém o caráter posições válidas à medida que o comprimento da string muda durante a substituição. O resultado é um log seguro string onde o significado é preservado, mas os dados pessoais são mascarados.
Coloque isso em seu pipeline de registro, middleware de relatório de erros ou qualquer sistema que capture texto gerado pelo usuário.
Conformidade com GDPR: verifique campos de texto livre automaticamente
O princípio de minimização de dados do GDPR (Artigo 5(1)(c)) exige que você colete apenas os dados pessoais dados que você precisa para uma finalidade específica. Os campos de texto livre são a maior lacuna na maior parte da conformidade estratégias porque você não pode prever o que os usuários digitarão.
Este middleware Express verifica campos configuráveis em diversas rotas:
async function gdprScanMiddleware(req, res, next) {
const fieldsToScan = ["message", "notes", "description", "comment"];
const findings = [];
for (const field of fieldsToScan) {
if (req.body[field]) {
const scan = await detectPII(req.body[field]);
if (scan.data.found) {
findings.push(
...scan.data.findings.map((f) => ({
field,
type: f.type,
masked: f.masked,
}))
);
}
}
}
if (findings.length > 0) {
return res.status(422).json({
error: "Personal data detected. Remove PII before submitting.",
findings,
});
}
next();
}
// Apply to routes that accept free-text input
app.post("/feedback", gdprScanMiddleware, feedbackHandler);
app.post("/comments", gdprScanMiddleware, commentHandler);
app.post("/contact", gdprScanMiddleware, contactHandler);
Anexe o middleware a qualquer rota que aceite entrada de texto livre. Ele verifica os campos que você especifica, e se PII for encontrada, a solicitação será rejeitada com uma mensagem de erro clara antes que qualquer dado seja armazenado.
Isso fornece um controle auditável que você pode apontar durante uma revisão do GDPR: "As entradas de texto livre são verificado em busca de PII na camada API. Envios contendo dados pessoais são rejeitados antes do armazenamento."
Onde adicionar digitalização de PII em sua pilha
- Middleware de API. Analise os corpos das solicitações antes que eles cheguem à sua lógica de negócios. Captura PII no ponto de entrada do seu sistema.
- Validação de formulário. Chame a API do lado do cliente ou do servidor antes do envio do formulário. Dê aos usuários a chance de remover eles próprios as PII.
- Pipeline de registro. Edite PII em mensagens de log antes que elas cheguem ao seu agregador de log. Impede que dados confidenciais se espalhem pela sua infraestrutura.
- Exportação de dados. Digitalize as exportações CSV ou JSON antes de enviá-las a terceiros. Mais um ponto de verificação antes que os dados saiam do seu sistema.
- Bate-papo e mensagens. Digitalize mensagens em ferramentas internas ou chat voltado para o cliente antes de serem armazenados em seu histórico de mensagens.
A API processa texto na memória na rede de borda da Cloudflare e o descarta após responder. Nenhum dado é armazenado ou registrado por parte do botoi. Você pode verificar isso verificando o Documentação da API pelas garantias de privacidade do endpoint.
FAQ
- Quais tipos de PII a API detecta?
- A API detecta seis tipos: endereços de e-mail, números de telefone, números de Seguro Social (SSN), números de cartão de crédito, endereços IP e datas de nascimento. Cada descoberta inclui o tipo, o valor bruto, a posição do caractere e uma versão mascarada.
- A API de detecção de PII é gratuita?
- Sim. O acesso anônimo está disponível a 5 solicitações por minuto com limitação de taxa baseada em IP. Nenhuma chave de API, nenhuma conta, nenhum cartão de crédito necessário. Planos pagos oferecem limites de taxas mais altos.
- A API armazena ou registra o texto que envio?
- Não. A API é executada em Cloudflare Workers na borda. Seu texto é processado na memória e descartado após o retorno da resposta. Nada é gravado no disco ou registrado.
- Posso usar isso para conformidade com o GDPR?
- A API ajuda você a identificar PII antes do armazenamento, o que oferece suporte à minimização de dados de acordo com o Artigo 5(1)(c) do GDPR. É uma ferramenta técnica e não um aconselhamento jurídico. Combine-o com as políticas de proteção de dados da sua organização e consulte um profissional jurídico para questões de conformidade.
- Quão precisa é a detecção?
- A API usa correspondência de padrões ajustada para formatos comuns (números de telefone dos EUA, endereços de e-mail padrão, números de cartão de crédito válidos para Luhn, etc.). Ele captura os padrões de PII mais comuns. Para formatos específicos de domínio ou identificadores fora dos EUA, teste com seus próprios dados para confirmar a cobertura.
Comece a construir com botoi
150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.