Сканируйте вводимые пользователем данные на предмет личных данных перед их сохранением с помощью одного вызова API.
Обнаруживайте и редактируйте электронные письма, номера телефонов, SSN, кредитные карты и IP-адреса в тексте до того, как он попадет в вашу базу данных. Бесплатный API для обнаружения PII, не требующий учетной записи.
Клиент отправляет заявку в службу поддержки и вставляет в описание номер своей кредитной карты. Пользователь заполняет форму обратной связи и указывает свой номер социального страхования. Внутренний инструмент регистрирует полное тело запроса, и теперь ваш агрегатор журналов сохраняет адреса электронной почты. и номера телефонов, которые вы никогда не просили.
Это наиболее распространенный способ, которым компании собирают личную информацию, которая им не нужна. Это не запрос функции пошло не так; это ввод произвольного текста, который делает то же, что и ввод произвольного текста. А в соответствии со статьей 5(1)(c) GDPR: хранение ненужных вам персональных данных нарушает принцип минимизации данных.
Исправление: сканируйте текст на предмет личных данных *прежде*, чем он попадет в вашу базу данных. Один вызов API перехватывает электронную почту, номера телефонов, SSN, номера кредитных карт, IP-адреса и даты рождения.
Один вызов API для обнаружения личных данных
Отправьте любой текст на /v1/pii/detect конечная точка. API сканирует его и возвращает каждые
PII соответствует его типу, положению и замаскированной версии.
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"
}'
Ответ:
{
"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 обнаружил во входных данных два элемента, позволяющие идентифицировать личность: адрес электронной почты и номер телефона. Каждая находка включает в себя
позиции персонажей (start и end), чтобы вы могли заменять, редактировать,
или отметьте точную подстроку.
Поддерживаемые типы личных данных
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
Каждый тип возвращает masked версия, которая сохраняет достаточный контекст для идентификации
категорию данных, не раскрывая полного значения.
Создайте сканер предварительного хранения
Самая ценная точка интеграции — непосредственно перед записью пользовательского ввода в базу данных. В этом примере Node.js сканируются поля заявки в службу поддержки и отклоняются заявки, содержащие персональные данные.
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 });
});
Когда пользователь отправляет заявку, содержащую PII, он получает ответ 422 со списком того, что было найдено. (с использованием замаскированных значений, а не необработанных данных). Они могут удалить конфиденциальную информацию и отправить ее повторно. Ваша база данных никогда не видит PII.
Этот подход работает для любой формы: контактные формы, опросы обратной связи, системы комментариев, внутренние заметки. Везде, где пользователи вводят произвольный текст, может появиться PII.
Редактировать перед входом в систему
Отклонение PII работает для форм, ориентированных на пользователя. Но что касается журналов, сообщений об ошибках и журналов аудита, вы хотите сохранить текст, удалив при этом конфиденциальные части. Эта функция заменяет каждый PII соответствует его замаскированной версии.
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"
Функция обрабатывает результаты, начиная с конца строки назад. Это сохраняет характер позиции действительны, поскольку длина строки изменяется во время замены. Результатом является журналобезопасность. строка, смысл которой сохраняется, но персональные данные маскируются.
Добавьте это в свой конвейер журналирования, промежуточное программное обеспечение для отчетов об ошибках или в любую систему, которая фиксирует пользовательский текст.
Соответствие GDPR: автоматическое сканирование полей с произвольным текстом
Принцип минимизации данных GDPR (статья 5(1)(c)) требует, чтобы вы собирали только личные данные. данные, необходимые для конкретной цели. Поля с произвольным текстом — самый большой пробел в большинстве требований стратегии, потому что вы не можете предсказать, что будут печатать пользователи.
Это промежуточное ПО Express сканирует настраиваемые поля по нескольким маршрутам:
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);
Прикрепите промежуточное программное обеспечение к любому маршруту, который принимает ввод произвольного текста. Он сканирует указанные вами поля, и если PII обнаружен, запрос отклоняется с четким сообщением об ошибке до того, как какие-либо данные будут сохранены.
Это дает вам проверяемый контроль, на который вы можете указать во время проверки GDPR: «Ввод произвольного текста сканируется на предмет PII на уровне API. Представления, содержащие персональные данные, отклоняются до сохранения».
Где добавить сканирование PII в ваш стек
- Промежуточное программное обеспечение API. Сканируйте тела запросов до того, как они достигнут вашей бизнес-логики. Перехватывает PII в точке входа в вашу систему.
- Проверка формы. Перед отправкой формы вызовите API на стороне клиента или сервера. Дайте пользователям возможность самостоятельно удалить персональные данные.
- Журнальный конвейер. Редактируйте личные данные в сообщениях журнала, прежде чем они попадут в агрегатор журналов. Предотвращает распространение конфиденциальных данных по вашей инфраструктуре.
- Экспорт данных. Сканируйте экспортированные файлы CSV или JSON перед отправкой их третьим лицам. Еще одна контрольная точка, прежде чем данные покинут вашу систему.
- Чат и обмен сообщениями. Сканируйте сообщения во внутренних инструментах или в чате для клиентов. прежде чем они будут сохранены в вашей истории сообщений.
API обрабатывает текст в памяти в периферийной сети Cloudflare и удаляет его после ответа. Никакие данные не сохраняются и не регистрируются на стороне Ботоя. Вы можете убедиться в этом, проверив Документация по API для гарантий конфиденциальности конечной точки.
FAQ
- Какие типы PII обнаруживает API?
- API обнаруживает шесть типов: адреса электронной почты, номера телефонов, номера социального страхования (SSN), номера кредитных карт, IP-адреса и даты рождения. Каждый результат включает тип, необработанное значение, позицию символа и замаскированную версию.
- Является ли API обнаружения PII бесплатным?
- Да. Анонимный доступ возможен со скоростью 5 запросов в минуту с ограничением скорости по IP. Ни ключ API, ни учетная запись, ни кредитная карта не требуются. Платные планы предлагают более высокие лимиты ставок.
- Сохраняет ли API отправляемый мной текст?
- Нет. API работает на рабочих серверах Cloudflare на периферии. Ваш текст обрабатывается в памяти и удаляется после возврата ответа. Ничего не записывается на диск и не регистрируется.
- Могу ли я использовать это для соблюдения GDPR?
- API помогает вам идентифицировать персональные данные перед сохранением, что поддерживает минимизацию данных в соответствии со статьей 5(1)(c) GDPR. Это технический инструмент, а не юридическая консультация. Сопоставьте его с политиками защиты данных вашей организации и проконсультируйтесь с юристом по вопросам соответствия.
- Насколько точно обнаружение?
- API использует сопоставление шаблонов, настроенное для распространенных форматов (номера телефонов в США, стандартные адреса электронной почты, действительные номера кредитных карт Luhn и т. д.). Он улавливает наиболее распространенные шаблоны PII. Для форматов, специфичных для домена, или идентификаторов, не относящихся к США, проверьте свои собственные данные, чтобы подтвердить покрытие.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.