Flutter SDK - Sanitizando dados sensíveis

Detalhes sobre a sanitização de gravações e de dados de rede no tracker do Flutter

Flutter SDK ⁠-⁠ Sanitizando dados sensíveis

Envolva em ORSanitizedView tudo o que não deve aparecer no replay. A região fica desfocada e hachurada na gravação, igual ao iOS SDK, e o widget se desregistra sozinho assim que sai da árvore.

import 'package:openreplay/openreplay.dart';

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

O mascaramento é aplicado como uma segunda passada de raster sobre o frame capturado, então nunca altera o que o seu usuário vê na tela.

As platform views — WebViews, mapas, previews da câmera — são renderizadas em camadas nativas separadas que o Flutter não consegue ler de volta, então, de outro modo, apareceriam como regiões em branco. O tracker as cobre com um placeholder por padrão. Para desativar esse comportamento, use maskPlatformViews: false:

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

Os corpos são descartados, a menos que você defina capturePayload: true, e os headers cookie, set-cookie e authorization são descartados por padrão. Além disso, o sanitizer tem a palavra final sobre cada chamada capturada:

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

Veja opções de rede para a lista completa de campos.

Se você tiver qualquer dúvida sobre este processo, fale com a gente no nosso Slack.