Zum Inhalt springen
Tutorial

Scannen Sie Benutzereingaben auf PII, bevor Sie sie mit einem API-Aufruf speichern

| 6 min read

Erkennen und schwärzen Sie E-Mails, Telefonnummern, SSNs, Kreditkarten und IP-Adressen im Text, bevor dieser in Ihre Datenbank gelangt. Kostenlose PII-Erkennungs-API, kein Konto erforderlich.

Privacy shield with personal data icons
Photo by Jason Dent on Unsplash

Ein Kunde reicht ein Support-Ticket ein und fügt seine Kreditkartennummer in die Beschreibung ein. Ein Benutzer füllt ein Feedback-Formular aus und gibt seine Sozialversicherungsnummer an. Ein internes Tool protokolliert den gesamten Anfragetext, und jetzt speichert Ihr Protokollaggregator E-Mail-Adressen und Telefonnummern, nach denen Sie nie gefragt haben.

Dies ist die häufigste Methode, mit der Unternehmen personenbezogene Daten erfassen, die sie nicht benötigen. Es handelt sich nicht um eine Funktionsanfrage schief gelaufen; Es ist eine Freitexteingabe, die das tut, was Freitexteingaben tun. Und gemäß DSGVO Artikel 5(1)(c), Das Speichern nicht benötigter personenbezogener Daten verstößt gegen den Grundsatz der Datenminimierung.

Die Lösung: Scannen Sie Text nach PII, *bevor* er Ihre Datenbank erreicht. Ein API-Aufruf fängt E-Mails ab, Telefonnummern, SSNs, Kreditkartennummern, IP-Adressen und Geburtsdaten.

Ein API-Aufruf zur Erkennung personenbezogener Daten

Senden Sie einen beliebigen Text an die /v1/pii/detect Endpunkt. Die API scannt es und gibt alle zurück PII-Übereinstimmung mit Typ, Position und einer maskierten Version.

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"
  }'

Antwort:

{
  "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"
      }
    ]
  }
}

Die API hat in der Eingabe zwei PII-Elemente gefunden: eine E-Mail-Adresse und eine Telefonnummer. Jeder Befund beinhaltet die Zeichenpositionen (start Und end), damit Sie ersetzen, redigieren, oder markieren Sie den genauen Teilstring.

Unterstützte PII-Typen

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

Jeder Typ gibt a zurück masked Version, die genügend Kontext bewahrt, um die zu identifizieren Datenkategorie, ohne den vollen Wert offenzulegen.

Erstellen Sie einen Pre-Storage-Scanner

Der Integrationspunkt mit dem höchsten Wert liegt unmittelbar bevor Sie Benutzereingaben in Ihre Datenbank schreiben. Dieses Node.js-Beispiel scannt Support-Ticketfelder und lehnt Einsendungen ab, die personenbezogene Daten enthalten.

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 });
});

Wenn ein Benutzer ein Ticket mit personenbezogenen Daten einreicht, erhält er eine 422-Antwort mit einer Auflistung der gefundenen Informationen (unter Verwendung maskierter Werte, nicht der Rohdaten). Sie können die vertraulichen Informationen entfernen und erneut übermitteln. Ihre Datenbank sieht die PII nie.

Dieser Ansatz funktioniert für jedes Formular: Kontaktformulare, Feedback-Umfragen, Kommentarsysteme, interne Notizen. Überall dort, wo Benutzer Freitext eingeben, können PII erscheinen.

Vor der Protokollierung redigieren

Das Ablehnen personenbezogener Daten funktioniert bei benutzerorientierten Formularen. Aber für Protokolle, Fehlermeldungen und Audit-Trails Sie möchten den Text behalten und gleichzeitig die empfindlichen Teile entfernen. Diese Funktion ersetzt jeden PII-Übereinstimmung mit seiner maskierten Version.

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"

Die Funktion verarbeitet Ergebnisse vom Ende der Zeichenfolge rückwärts. Dadurch bleibt der Charakter erhalten Positionen gültig, da sich die Zeichenfolgenlänge während des Ersetzens ändert. Das Ergebnis ist ein Log-Safe Zeichenfolge, bei der die Bedeutung erhalten bleibt, die persönlichen Daten jedoch maskiert werden.

Fügen Sie dies in Ihre Protokollierungspipeline, Ihre Fehlerberichts-Middleware oder ein beliebiges System ein, das Daten aufzeichnet Vom Benutzer generierter Text.

DSGVO-Konformität: Freitextfelder automatisch scannen

Der Grundsatz der Datenminimierung (Artikel 5 Absatz 1 Buchstabe c) der DSGVO verlangt, dass Sie nur personenbezogene Daten erheben Daten, die Sie für einen bestimmten Zweck benötigen. Freitextfelder sind die größte Lücke in den meisten Compliance-Bereichen Strategien, da Sie nicht vorhersagen können, was Benutzer eingeben werden.

Diese Express-Middleware scannt konfigurierbare Felder über mehrere Routen:

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);

Hängen Sie die Middleware an jede Route an, die Freitexteingaben akzeptiert. Es scannt die von Ihnen angegebenen Felder, und wenn PII gefunden werden, wird die Anfrage mit einer eindeutigen Fehlermeldung abgelehnt, bevor Daten gespeichert werden.

Dies gibt Ihnen eine überprüfbare Kontrolle, auf die Sie bei einer DSGVO-Überprüfung verweisen können: „Freitexteingaben sind auf PII auf der API-Ebene gescannt. Einsendungen, die personenbezogene Daten enthalten, werden vor der Speicherung abgelehnt.“

Wo Sie PII-Scans zu Ihrem Stapel hinzufügen können

  • API-Middleware. Scannen Sie Anforderungstexte, bevor sie Ihre Geschäftslogik erreichen. Fängt personenbezogene Daten am Eintrittspunkt Ihres Systems ab.
  • Formularvalidierung. Rufen Sie die API clientseitig oder serverseitig auf, bevor Sie das Formular einreichen. Geben Sie Benutzern die Möglichkeit, personenbezogene Daten selbst zu entfernen.
  • Protokollpipeline. Schwärzen Sie personenbezogene Daten in Protokollnachrichten, bevor diese Ihren Protokollaggregator erreichen. Verhindert die Verbreitung sensibler Daten in Ihrer Infrastruktur.
  • Datenexport. Scannen Sie CSV- oder JSON-Exporte, bevor Sie sie an Dritte senden. Ein weiterer Kontrollpunkt, bevor die Daten Ihr System verlassen.
  • Chat und Nachrichten. Scannen Sie Nachrichten in internen Tools oder im kundenorientierten Chat bevor sie in Ihrem Nachrichtenverlauf gespeichert werden.

Die API verarbeitet Text im Speicher im Edge-Netzwerk von Cloudflare und verwirft ihn nach der Antwort. Auf botois Seite werden keine Daten gespeichert oder protokolliert. Sie können dies überprüfen, indem Sie die überprüfen API-Dokumentation für die Datenschutzgarantien des Endpunkts.

FAQ

Welche PII-Typen erkennt die API?
Die API erkennt sechs Typen: E-Mail-Adressen, Telefonnummern, Sozialversicherungsnummern (SSN), Kreditkartennummern, IP-Adressen und Geburtsdaten. Jeder Befund umfasst den Typ, den Rohwert, die Zeichenposition und eine maskierte Version.
Ist die PII-Erkennungs-API kostenlos?
Ja. Der anonyme Zugriff ist mit 5 Anfragen pro Minute und IP-basierter Ratenbegrenzung möglich. Kein API-Schlüssel, kein Konto, keine Kreditkarte erforderlich. Bezahlte Pläne bieten höhere Tariflimits.
Speichert oder protokolliert die API den von mir gesendeten Text?
Nein. Die API läuft auf Cloudflare Workers am Edge. Ihr Text wird im Speicher verarbeitet und verworfen, nachdem die Antwort zurückgegeben wurde. Es wird nichts auf die Festplatte geschrieben oder protokolliert.
Kann ich dies für die Einhaltung der DSGVO verwenden?
Die API hilft Ihnen, personenbezogene Daten vor der Speicherung zu identifizieren, was die Datenminimierung gemäß Artikel 5 Absatz 1 Buchstabe c der DSGVO unterstützt. Es handelt sich um ein technisches Hilfsmittel, nicht um eine Rechtsberatung. Kombinieren Sie es mit den Datenschutzrichtlinien Ihres Unternehmens und wenden Sie sich bei Compliance-Fragen an einen Rechtsexperten.
Wie genau ist die Erkennung?
Die API verwendet einen Mustervergleich, der auf gängige Formate abgestimmt ist (US-Telefonnummern, Standard-E-Mail-Adressen, Luhn-gültige Kreditkartennummern usw.). Es erfasst die gängigsten PII-Muster. Testen Sie bei domänenspezifischen Formaten oder Nicht-US-Kennungen mit Ihren eigenen Daten, um die Abdeckung zu bestätigen.

Starte mit botoi zu entwickeln

150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.