تخطي إلى المحتوى
Tutorial

قم بمسح إدخال المستخدم بحثًا عن معلومات تحديد الهوية الشخصية (PII) قبل تخزينها باستدعاء واجهة برمجة التطبيقات (API) واحد

| 6 min read

اكتشف وتنقيح رسائل البريد الإلكتروني وأرقام الهواتف وأرقام الضمان الاجتماعي وبطاقات الائتمان وعناوين IP في النص قبل أن تصل إلى قاعدة البيانات الخاصة بك. واجهة برمجة تطبيقات مجانية للكشف عن معلومات تحديد الهوية الشخصية (PII) دون الحاجة إلى حساب.

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

يرسل العميل تذكرة دعم ويلصق رقم بطاقة الائتمان الخاصة به في الوصف. يقوم المستخدم بملء نموذج الملاحظات ويتضمن رقم الضمان الاجتماعي الخاص به. تقوم أداة داخلية بتسجيل نص الطلب بالكامل، والآن يقوم مجمع السجلات الخاص بك بتخزين عناوين البريد الإلكتروني وأرقام هواتف لم تطلبها أبدًا.

هذه هي الطريقة الأكثر شيوعًا التي تقوم بها الشركات بجمع معلومات تحديد الهوية الشخصية (PII) التي لا تحتاج إليها. إنه ليس طلب ميزة أخطأت؛ إنه إدخال النص الحر يفعل ما يفعله إدخال النص الحر. وبموجب المادة 5 (1) (ج) من اللائحة العامة لحماية البيانات، تخزين البيانات الشخصية التي لا تحتاج إليها ينتهك مبدأ تقليل البيانات.

الحل: مسح النص بحثًا عن معلومات تحديد الهوية الشخصية *قبل* أن يصل إلى قاعدة البيانات الخاصة بك. استدعاء واحد لواجهة برمجة التطبيقات (API) يلتقط رسائل البريد الإلكتروني، أرقام الهواتف وأرقام الضمان الاجتماعي وأرقام بطاقات الائتمان وعناوين IP وتواريخ الميلاد.

استدعاء API واحد لاكتشاف معلومات تحديد الهوية الشخصية (PII).

أرسل أي نص إلى /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) على عنصري معلومات تحديد الهوية الشخصية (PII) في الإدخال: عنوان بريد إلكتروني ورقم هاتف. تتضمن كل نتيجة مواضع الحروف (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 هذا بفحص حقول تذكرة الدعم ويرفض عمليات الإرسال التي تحتوي على معلومات تحديد الهوية الشخصية (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 });
});

عندما يرسل مستخدم تذكرة تحتوي على معلومات تحديد الهوية الشخصية، فإنه يحصل على رد 422 يسرد ما تم العثور عليه (باستخدام القيم المقنعة، وليس البيانات الأولية). يمكنهم إزالة المعلومات الحساسة وإعادة الإرسال. قاعدة البيانات الخاصة بك لا ترى معلومات تحديد الهوية الشخصية أبدًا.

يعمل هذا الأسلوب مع أي شكل: نماذج الاتصال، واستطلاعات الرأي، وأنظمة التعليقات، والملاحظات الداخلية. في أي مكان يكتب فيه المستخدمون نصًا مجانيًا، يمكن أن تظهر معلومات تحديد الهوية الشخصية (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"

تقوم الدالة بمعالجة النتائج من نهاية السلسلة إلى الخلف. هذا يحافظ على الشخصية المواضع صالحة مع تغير طول السلسلة أثناء الاستبدال. والنتيجة هي سجل آمن سلسلة يتم فيها الاحتفاظ بالمعنى ولكن يتم إخفاء البيانات الشخصية.

قم بإسقاط هذا في مسار التسجيل الخاص بك، أو البرامج الوسيطة للإبلاغ عن الأخطاء، أو أي نظام يلتقطه النص الذي أنشأه المستخدم.

الامتثال للقانون العام لحماية البيانات: مسح حقول النص الحر تلقائيًا

يتطلب مبدأ تقليل البيانات الخاص باللائحة العامة لحماية البيانات (المادة 5 (1) (ج)) أن تقوم بجمع البيانات الشخصية فقط البيانات التي تحتاجها لغرض محدد. تمثل حقول النص الحر أكبر فجوة في معظم الامتثال الاستراتيجيات لأنك لا تستطيع التنبؤ بما سيكتبه المستخدمون.

تقوم هذه البرمجيات الوسيطة 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) في طبقة API. يتم رفض التقديمات التي تحتوي على بيانات شخصية قبل تخزينها."

مكان إضافة مسح PII في مجموعتك

  • الوسيطة لواجهة برمجة التطبيقات (API). قم بمسح نصوص الطلب قبل أن تصل إلى منطق عملك. يلتقط معلومات تحديد الهوية الشخصية (PII) عند نقطة دخول نظامك.
  • التحقق من صحة النموذج. اتصل بجانب عميل API أو جانب الخادم قبل إرسال النموذج. امنح المستخدمين فرصة لإزالة معلومات تحديد الهوية الشخصية (PII) بأنفسهم.
  • خط أنابيب السجل. قم بتنقيح معلومات تحديد الهوية الشخصية (PII) في رسائل السجل قبل أن تصل إلى مجمع السجل الخاص بك. يمنع البيانات الحساسة من الانتشار عبر البنية التحتية الخاصة بك.
  • تصدير البيانات. قم بمسح صادرات CSV أو JSON قبل إرسالها إلى جهات خارجية. نقطة تفتيش أخرى قبل أن تغادر البيانات نظامك.
  • الدردشة والرسائل. قم بمسح الرسائل ضوئيًا في الأدوات الداخلية أو الدردشة التي تواجه العملاء قبل أن يتم تخزينها في سجل رسائلك.

تقوم واجهة برمجة التطبيقات (API) بمعالجة النص الموجود في الذاكرة على شبكة Cloudflare الطرفية وتتجاهله بعد الاستجابة. لا يتم تخزين أي بيانات أو تسجيلها من جانب بوتوي. يمكنك التحقق من ذلك عن طريق التحقق من وثائق واجهة برمجة التطبيقات لضمانات خصوصية نقطة النهاية.

FAQ

ما هي أنواع معلومات تحديد الهوية الشخصية (PII) التي تكتشفها واجهة برمجة التطبيقات (API)؟
تكتشف واجهة برمجة التطبيقات ستة أنواع: عناوين البريد الإلكتروني وأرقام الهواتف وأرقام الضمان الاجتماعي (SSN) وأرقام بطاقات الائتمان وعناوين IP وتواريخ الميلاد. يتضمن كل نتيجة النوع والقيمة الأولية وموضع الحرف والنسخة المقنعة.
هل واجهة برمجة التطبيقات (API) للكشف عن معلومات تحديد الهوية الشخصية (PII) مجانية؟
نعم. يتوفر الوصول المجهول بمعدل 5 طلبات في الدقيقة مع تحديد معدل يعتمد على IP. لا يوجد مفتاح API، ولا يوجد حساب، ولا يلزم وجود بطاقة ائتمان. توفر الخطط المدفوعة حدود أسعار أعلى.
هل تقوم واجهة برمجة التطبيقات (API) بتخزين النص الذي أرسله أو تسجيله؟
لا، تعمل واجهة برمجة التطبيقات (API) على Cloudflare Workers عند الحافة. تتم معالجة النص الخاص بك في الذاكرة ويتم التخلص منه بعد إرجاع الرد. لا يتم كتابة أي شيء على القرص أو تسجيله.
هل يمكنني استخدام هذا للامتثال للقانون العام لحماية البيانات (GDPR)؟
تساعدك واجهة برمجة التطبيقات (API) على تحديد معلومات تحديد الهوية الشخصية (PII) قبل التخزين، مما يدعم تقليل البيانات بموجب المادة 5 (1) (ج) من اللائحة العامة لحماية البيانات (GDPR). إنها أداة فنية وليست مشورة قانونية. قم بإقرانها بسياسات حماية البيانات الخاصة بمؤسستك واستشر أحد المتخصصين القانونيين لطرح أسئلة حول الامتثال.
ما مدى دقة الكشف؟
تستخدم واجهة برمجة التطبيقات (API) مطابقة الأنماط المضبوطة للتنسيقات الشائعة (أرقام الهواتف الأمريكية، وعناوين البريد الإلكتروني القياسية، وأرقام بطاقات الائتمان الصالحة لـ Luhn، وما إلى ذلك). فهو يلتقط أنماط معلومات تحديد الهوية الشخصية (PII) الأكثر شيوعًا. بالنسبة للتنسيقات الخاصة بالمجال أو المعرفات غير الأمريكية، قم بإجراء الاختبار باستخدام بياناتك الخاصة لتأكيد التغطية.

ابدأ البناء مع botoi

أكثر من 150 نقطة نهاية API للبحث ومعالجة النصوص وتوليد الصور وأدوات المطورين. باقة مجانية، بدون بطاقة ائتمان.