Flutter SDK - تنقية البيانات الحساسة

تفاصيل حول تنقية التسجيلات وبيانات الشبكة في متتبّع Flutter

Flutter SDK ⁠-⁠ تنقية البيانات الحساسة

مكوّنات واجهة المستخدم

Section titled مكوّنات واجهة المستخدم

غلّف أي شيء يجب ألا يظهر في إعادة التشغيل بـ ORSanitizedView. تظهر المنطقة مموّهة ومخطّطة في التسجيل، بما يطابق iOS SDK، ويُلغي عنصر الواجهة (widget) تسجيل نفسه بمجرد مغادرته شجرة العناصر.

import 'package:openreplay/openreplay.dart';

ORSanitizedView(
  child: TextField(
    controller: _cardNumber,
    decoration: const InputDecoration(labelText: 'Card number'),
  ),
)

يُطبَّق الإخفاء كتمريرة تنقيط (raster) ثانية على الإطار الملتقَط، لذا فهو لا يغيّر أبدًا ما يراه المستخدم على الشاشة.

طرق عرض المنصّة (Platform views)

Section titled طرق عرض المنصّة (Platform views)

تُعرض طرق عرض المنصّة — WebViews والخرائط ومعاينات الكاميرا — في طبقات أصلية منفصلة لا يستطيع Flutter قراءتها، لذا ستظهر خلاف ذلك كمناطق فارغة. تغطّيها أداة التتبّع بعنصر نائب بشكل افتراضي. يمكنك إلغاء ذلك باستخدام maskPlatformViews: false:

await OpenReplay.instance.start(
  projectKey: 'YOUR_PROJECT_KEY',
  options: const OROptions(maskPlatformViews: false),
);

يتم تجاهل الأجسام ما لم تضبط capturePayload: true، كما يتم تجاهل ترويسات cookie وset-cookie وauthorization بشكل افتراضي. وإلى جانب ذلك، تكون الكلمة الأخيرة لـ sanitizer في كل استدعاء ملتقَط:

OpenReplay.instance.patchNetwork(ORNetworkOptions(
  capturePayload: true,
  ignoreHeaders: ['cookie', 'set-cookie', 'authorization', 'x-api-key'],
  sanitizer: (record) {
    final body = record.requestBody;
    if (body is Map) body.remove('password');
    return record; // return null to drop the call entirely
  },
));

راجع خيارات الشبكة للاطلاع على القائمة الكاملة للحقول.

إذا كانت لديك أي أسئلة حول هذه العملية، فلا تتردد في التواصل معنا عبر Slack أو زيارة المنتدى.