SDK Flutter - Assainir les données sensibles
Composants d’interface
Section titled Composants d’interfaceEnveloppez dans ORSanitizedView tout ce qui ne doit pas apparaître dans le replay. La zone est floutée et hachurée dans l’enregistrement, comme avec l’iOS SDK, et le widget se désinscrit de lui-même dès qu’il quitte l’arbre.
import 'package:openreplay/openreplay.dart';
ORSanitizedView(
child: TextField(
controller: _cardNumber,
decoration: const InputDecoration(labelText: 'Card number'),
),
)
Le masquage est appliqué lors d’une seconde passe de rastérisation sur la frame capturée, il ne modifie donc jamais ce que votre utilisateur voit à l’écran.
Platform views
Section titled Platform viewsLes platform views (WebViews, cartes, aperçus de caméra) sont rendues dans des couches natives distinctes que Flutter ne peut pas relire ; elles apparaîtraient donc autrement comme des zones vides. Le tracker les recouvre par défaut d’un espace réservé. Désactivez ce comportement avec maskPlatformViews: false :
await OpenReplay.instance.start(
projectKey: 'YOUR_PROJECT_KEY',
options: const OROptions(maskPlatformViews: false),
);
Requêtes réseau
Section titled Requêtes réseauLes corps sont ignorés sauf si vous définissez capturePayload: true, et les en-têtes cookie, set-cookie et authorization sont ignorés par défaut. Au-delà, sanitizer a le dernier mot sur chaque appel capturé :
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
},
));
Consultez les options réseau pour la liste complète des champs.
Des questions ?
Section titled Des questions ?Si vous avez des questions sur ce processus, n’hésitez pas à nous contacter sur notre Slack ou à consulter notre Forum.