SDK de Flutter - Sanear datos sensibles
Componentes de UI
Section titled Componentes de UIEnvuelve en ORSanitizedView todo lo que no deba aparecer en la reproducción. La región se difumina y se sombrea con tramas en la grabación, igual que en el SDK de iOS, y el widget se da de baja en cuanto sale del árbol.
import 'package:openreplay/openreplay.dart';
ORSanitizedView(
child: TextField(
controller: _cardNumber,
decoration: const InputDecoration(labelText: 'Card number'),
),
)
El enmascaramiento se aplica como una segunda pasada de rasterizado sobre el frame capturado, por lo que nunca cambia lo que tu usuario ve en pantalla.
Platform views
Section titled Platform viewsLas platform views (WebViews, mapas, vistas previas de cámara) se renderizan en capas nativas separadas que Flutter no puede leer, por lo que de otro modo aparecerían como regiones en blanco. El tracker las cubre con un marcador de posición de forma predeterminada. Desactívalo con maskPlatformViews: false:
await OpenReplay.instance.start(
projectKey: 'YOUR_PROJECT_KEY',
options: const OROptions(maskPlatformViews: false),
);
Solicitudes de red
Section titled Solicitudes de redLos cuerpos se descartan a menos que establezcas capturePayload: true, y los encabezados cookie, set-cookie y authorization se descartan de forma predeterminada. Más allá de eso, sanitizer tiene la última palabra sobre cada llamada 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
},
));
Consulta las opciones de red para ver la lista completa de campos.
¿Tienes preguntas?
Section titled ¿Tienes preguntas?Si tienes alguna pregunta sobre este proceso, no dudes en contactarnos en nuestro Slack o consulta nuestro Foro.