Pindai input pengguna untuk PII sebelum menyimpannya dengan satu panggilan API
Deteksi dan redaksi email, nomor telepon, SSN, kartu kredit, dan alamat IP dalam teks sebelum masuk ke database Anda. API deteksi PII gratis tanpa memerlukan akun.
Pelanggan mengirimkan tiket dukungan dan menempelkan nomor kartu kreditnya di deskripsi. Seorang pengguna mengisi formulir umpan balik dan memasukkan nomor Jaminan Sosial mereka. Alat internal mencatat seluruh isi permintaan, dan sekarang agregator log Anda menyimpan alamat email dan nomor telepon yang tidak pernah Anda minta.
Ini adalah cara paling umum yang dilakukan perusahaan untuk mengumpulkan PII yang tidak mereka perlukan. Ini bukan permintaan fitur salah; itu adalah masukan teks bebas yang melakukan apa yang dilakukan masukan teks bebas. Dan berdasarkan Pasal 5(1)(c) GDPR, menyimpan data pribadi yang tidak Anda perlukan melanggar prinsip minimalisasi data.
Cara mengatasinya: pindai teks untuk PII *sebelum* mencapai database Anda. Satu panggilan API menangkap email, nomor telepon, SSN, nomor kartu kredit, alamat IP, dan tanggal lahir.
Satu panggilan API untuk mendeteksi PII
Kirim teks apa pun ke /v1/pii/detect titik akhir. API memindainya dan mengembalikan semuanya
PII cocok dengan tipe, posisi, dan versi yang disamarkan.
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"
}'
Tanggapan:
{
"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"
}
]
}
}
API menemukan dua item PII dalam masukan: alamat email dan nomor telepon. Setiap temuan mencakup
posisi karakter (start Dan end) sehingga Anda dapat mengganti, menyunting,
atau tandai substring yang tepat.
Jenis PII yang didukung
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
Setiap tipe mengembalikan a masked versi yang mempertahankan konteks yang cukup untuk mengidentifikasi
kategori data tanpa memaparkan nilai penuh.
Bangun pemindai pra-penyimpanan
Titik integrasi dengan nilai tertinggi berada tepat sebelum Anda menulis input pengguna ke database Anda. Contoh Node.js ini memindai kolom tiket dukungan dan menolak pengiriman yang berisi 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 });
});
Saat pengguna mengirimkan tiket yang berisi PII, mereka mendapatkan respons 422 yang mencantumkan apa yang ditemukan (menggunakan nilai yang disamarkan, bukan data mentah). Mereka dapat menghapus informasi sensitif dan mengirimkannya kembali. Basis data Anda tidak pernah melihat PII.
Pendekatan ini dapat diterapkan dalam segala bentuk: formulir kontak, survei umpan balik, sistem komentar, catatan internal. Dimanapun pengguna mengetik teks bebas, PII dapat muncul.
Sunting sebelum masuk
Menolak PII berfungsi untuk formulir yang dilihat pengguna. Namun untuk log, pesan kesalahan, dan jejak audit, Anda ingin menyimpan teks sambil menghilangkan bagian sensitifnya. Fungsi ini menggantikan masing-masing PII cocok dengan versi bertopengnya.
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"
Fungsi ini memproses temuan dari ujung string ke belakang. Ini menjaga karakter posisi valid karena panjang string berubah selama penggantian. Hasilnya adalah log-safe string yang maknanya dipertahankan tetapi data pribadinya disembunyikan.
Masukkan ini ke dalam saluran logging Anda, middleware pelaporan kesalahan, atau sistem apa pun yang menangkapnya teks yang dibuat pengguna.
Kepatuhan GDPR: memindai kolom teks bebas secara otomatis
Prinsip minimalisasi data GDPR (Pasal 5(1)(c)) mengharuskan Anda hanya mengumpulkan data pribadi data yang Anda perlukan untuk tujuan tertentu. Bidang teks bebas adalah kesenjangan terbesar dalam sebagian besar kepatuhan strategi karena Anda tidak dapat memprediksi apa yang akan diketik pengguna.
Middleware Express ini memindai bidang yang dapat dikonfigurasi di beberapa rute:
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);
Lampirkan middleware ke rute mana pun yang menerima input teks bebas. Ini memindai bidang yang Anda tentukan, dan jika PII ditemukan, permintaan ditolak dengan pesan kesalahan yang jelas sebelum data apa pun disimpan.
Hal ini memberi Anda kontrol yang dapat diaudit yang dapat Anda tunjukkan selama peninjauan GDPR: "Input teks bebas adalah dipindai untuk PII di lapisan API. Pengiriman yang berisi data pribadi ditolak sebelum disimpan."
Di mana menambahkan pemindaian PII di tumpukan Anda
- Perangkat tengah API. Pindai badan permintaan sebelum mencapai logika bisnis Anda. Menangkap PII di titik masuk sistem Anda.
- Validasi formulir. Panggil API sisi klien atau sisi server sebelum pengiriman formulir. Beri pengguna kesempatan untuk menghapus PII sendiri.
- Log pipa. Sunting PII dalam pesan log sebelum mencapai agregator log Anda. Mencegah data sensitif menyebar ke seluruh infrastruktur Anda.
- Ekspor data. Pindai ekspor CSV atau JSON sebelum mengirimkannya ke pihak ketiga. Satu pos pemeriksaan lagi sebelum data meninggalkan sistem Anda.
- Obrolan dan perpesanan. Pindai pesan di alat internal atau obrolan langsung dengan pelanggan sebelum disimpan dalam riwayat pesan Anda.
API memproses teks dalam memori di jaringan edge Cloudflare dan membuangnya setelah merespons. Tidak ada data yang disimpan atau dicatat di sisi botoi. Anda dapat memverifikasi ini dengan memeriksa dokumentasi API untuk jaminan privasi titik akhir.
FAQ
- Jenis PII apa yang dideteksi API?
- API mendeteksi enam jenis: alamat email, nomor telepon, nomor Jaminan Sosial (SSN), nomor kartu kredit, alamat IP, dan tanggal lahir. Setiap temuan mencakup tipe, nilai mentah, posisi karakter, dan versi bertopeng.
- Apakah API deteksi PII gratis?
- Ya. Akses anonim tersedia dengan 5 permintaan per menit dengan pembatasan tarif berbasis IP. Tanpa kunci API, tanpa akun, tanpa perlu kartu kredit. Paket berbayar menawarkan batas tarif yang lebih tinggi.
- Apakah API menyimpan atau mencatat teks yang saya kirim?
- Tidak. API berjalan pada Cloudflare Workers di edge. Teks Anda diproses di memori dan dibuang setelah respons dikembalikan. Tidak ada yang ditulis ke disk atau dicatat.
- Bisakah saya menggunakan ini untuk kepatuhan GDPR?
- API membantu Anda mengidentifikasi PII sebelum penyimpanan, yang mendukung minimalisasi data berdasarkan Pasal 5(1)(c) GDPR. Ini adalah alat teknis, bukan nasihat hukum. Pasangkan dengan kebijakan perlindungan data organisasi Anda dan konsultasikan dengan profesional hukum untuk pertanyaan kepatuhan.
- Seberapa akurat pendeteksiannya?
- API menggunakan pencocokan pola yang disesuaikan dengan format umum (nomor telepon AS, alamat email standar, nomor kartu kredit Luhn yang valid, dll.). Ini menangkap pola PII yang paling umum. Untuk format khusus domain atau ID non-AS, uji dengan data Anda sendiri untuk mengonfirmasi cakupan.
Mulai membangun dengan botoi
150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.