Flutter SDK - 민감한 데이터 정제

Flutter 트래커에서 녹화 및 네트워크 데이터를 정제하는 방법에 대한 자세한 설명

Flutter SDK ⁠-⁠ 민감한 데이터 정제

리플레이에 나타나서는 안 되는 모든 요소를 ORSanitizedView로 감싸세요. 해당 영역은 iOS SDK와 마찬가지로 녹화에서 흐리게 처리되고 빗금이 표시되며, 위젯이 트리에서 제거되는 즉시 스스로 등록을 해제합니다.

import 'package:openreplay/openreplay.dart';

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

마스킹은 캡처된 프레임 위에 두 번째 래스터 패스로 적용되므로, 사용자가 화면에서 보는 모습은 전혀 바뀌지 않습니다.

WebView, 지도, 카메라 미리보기 같은 플랫폼 뷰는 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으로 문의해 주세요.