Analysez les entrées de l'utilisateur pour rechercher des informations personnelles avant de les stocker avec un seul appel d'API.
Détectez et supprimez les e-mails, les numéros de téléphone, les SSN, les cartes de crédit et les adresses IP dans le texte avant qu'ils n'atteignent votre base de données. API de détection PII gratuite sans compte requis.
Un client soumet un ticket d'assistance et colle son numéro de carte de crédit dans la description. Un utilisateur remplit un formulaire de commentaires et inclut son numéro de sécurité sociale. Un outil interne enregistre le corps complet de la demande et votre agrégateur de journaux stocke désormais les adresses e-mail. et des numéros de téléphone que vous n'avez jamais demandés.
Il s’agit de la manière la plus courante pour les entreprises de collecter les informations personnelles dont elles n’ont pas besoin. Ce n'est pas une demande de fonctionnalité ça a mal tourné; c'est une saisie de texte libre qui fait ce que fait la saisie de texte libre. Et en vertu de l'article 5(1)(c) du RGPD, le stockage de données personnelles dont vous n'avez pas besoin viole le principe de minimisation des données.
Le correctif : analysez le texte pour rechercher des informations personnelles *avant* qu'il n'atteigne votre base de données. Un appel API capte les e-mails, numéros de téléphone, SSN, numéros de carte de crédit, adresses IP et dates de naissance.
Un appel API pour détecter les informations personnelles
Envoyez n'importe quel texte au /v1/pii/detect point final. L'API l'analyse et renvoie chaque
Les informations personnelles correspondent à leur type, leur position et une version masquée.
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"
}'
Réponse:
{
"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"
}
]
}
}
L'API a trouvé deux éléments PII dans l'entrée : une adresse e-mail et un numéro de téléphone. Chaque constatation comprend
les positions des caractères (start et end) afin que vous puissiez remplacer, expurger,
ou marquez la sous-chaîne exacte.
Types de données personnelles pris en charge
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
Chaque type renvoie un masked version qui préserve suffisamment de contexte pour identifier le
catégorie de données sans exposer la valeur complète.
Construire un scanner de pré-stockage
Le point d'intégration ayant la valeur la plus élevée se situe juste avant que vous écriviez les entrées utilisateur dans votre base de données. Cet exemple Node.js analyse les champs du ticket de support et rejette les soumissions contenant des informations personnelles.
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 });
});
Lorsqu'un utilisateur soumet un ticket contenant des informations personnelles, il reçoit une réponse 422 répertoriant ce qui a été trouvé. (en utilisant des valeurs masquées, pas les données brutes). Ils peuvent supprimer les informations sensibles et les soumettre à nouveau. Votre base de données ne voit jamais les informations personnelles.
Cette approche fonctionne sous toutes les formes : formulaires de contact, enquêtes de rétroaction, systèmes de commentaires, notes internes. Partout où les utilisateurs saisissent du texte libre, des informations personnelles peuvent apparaître.
Rédiger avant de se connecter
Le rejet des informations personnelles fonctionne pour les formulaires destinés aux utilisateurs. Mais pour les journaux, les messages d'erreur et les pistes d'audit, vous souhaitez conserver le texte tout en supprimant les parties sensibles. Cette fonction remplace chaque Match PII avec sa version masquée.
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"
La fonction traite les résultats à partir de la fin de la chaîne vers l’arrière. Cela garde le caractère positions valides lorsque la longueur de la chaîne change lors du remplacement. Le résultat est un journal sécurisé chaîne dont le sens est conservé mais les données personnelles sont masquées.
Déposez-le dans votre pipeline de journalisation, votre middleware de rapport d'erreurs ou tout autre système qui capture texte généré par l'utilisateur.
Conformité RGPD : analysez automatiquement les champs de texte libre
Le principe de minimisation des données du RGPD (article 5(1)(c)) exige que vous collectiez uniquement les données personnelles. les données dont vous avez besoin dans un but spécifique. Les champs de texte libre constituent la plus grande lacune en matière de conformité stratégies, car vous ne pouvez pas prédire ce que les utilisateurs vont taper.
Ce middleware Express analyse les champs configurables sur plusieurs itinéraires :
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);
Attachez le middleware à n’importe quelle route qui accepte la saisie de texte libre. Il analyse les champs que vous spécifiez, et si des informations personnelles sont trouvées, la demande est rejetée avec un message d'erreur clair avant que les données ne soient stockées.
Cela vous donne un contrôle vérifiable sur lequel vous pouvez pointer lors d'une révision du RGPD : "Les entrées en texte libre sont scanné pour les PII au niveau de la couche API. Les soumissions contenant des données personnelles sont rejetées avant stockage.
Où ajouter l'analyse PII dans votre pile
- Intergiciel API. Analysez les corps des requêtes avant qu’elles n’atteignent votre logique métier. Récupère les informations personnelles au point d'entrée de votre système.
- Validation du formulaire. Appelez l'API côté client ou côté serveur avant de soumettre le formulaire. Donnez aux utilisateurs la possibilité de supprimer eux-mêmes les informations personnelles.
- Pipeline de journaux. Rédigez les informations personnelles dans les messages de journal avant qu'ils n'atteignent votre agrégateur de journaux. Empêche les données sensibles de se propager dans votre infrastructure.
- Exportation de données. Scannez les exportations CSV ou JSON avant de les envoyer à des tiers. Un point de contrôle supplémentaire avant que les données ne quittent votre système.
- Chat et messagerie. Analyser les messages dans les outils internes ou dans le chat face au client avant qu'ils ne soient stockés dans l'historique de vos messages.
L'API traite le texte en mémoire sur le réseau périphérique de Cloudflare et le supprime après avoir répondu. Aucune donnée n'est stockée ou enregistrée du côté de Botoi. Vous pouvez le vérifier en vérifiant le Documentation API pour les garanties de confidentialité du point final.
FAQ
- Quels types de données personnelles l'API détecte-t-elle ?
- L'API détecte six types : adresses e-mail, numéros de téléphone, numéros de sécurité sociale (SSN), numéros de carte de crédit, adresses IP et dates de naissance. Chaque résultat comprend le type, la valeur brute, la position du caractère et une version masquée.
- L'API de détection des informations personnelles est-elle gratuite ?
- Oui. L'accès anonyme est disponible à 5 requêtes par minute avec une limitation de débit basée sur IP. Aucune clé API, aucun compte, aucune carte de crédit requise. Les forfaits payants offrent des limites de tarifs plus élevées.
- L'API stocke-t-elle ou enregistre-t-elle le texte que j'envoie ?
- Non. L'API s'exécute sur Cloudflare Workers en périphérie. Votre texte est traité en mémoire et supprimé une fois la réponse renvoyée. Rien n'est écrit sur le disque ou enregistré.
- Puis-je l'utiliser pour la conformité au RGPD ?
- L'API vous aide à identifier les informations personnelles avant le stockage, ce qui prend en charge la minimisation des données conformément à l'article 5(1)(c) du RGPD. Il s'agit d'un outil technique et non d'un conseil juridique. Associez-le aux politiques de protection des données de votre organisation et consultez un professionnel du droit pour toute question de conformité.
- Quelle est la précision de la détection ?
- L'API utilise une correspondance de modèles adaptée aux formats courants (numéros de téléphone américains, adresses e-mail standard, numéros de carte de crédit valides Luhn, etc.). Il détecte les modèles PII les plus courants. Pour les formats spécifiques à un domaine ou les identifiants non américains, testez avec vos propres données pour confirmer la couverture.
Commencez a construire avec botoi
150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.