난독화 룰을 사용하면 에이전트가 뉴렐릭으로 전송하기 전에 민감한 데이터를 마스크할 수 있습니다. 각 룰은 대체 문자열과 쌍을 이루는 정규식 패턴입니다. 에이전트는 QoE 이벤트 및 크래시 복구 이벤트를 포함하여 모든 발신 이벤트의 모든 문자열 속성 값에 순서대로 룰을 적용합니다.
구성
Objective-C
NRVAVideoConfiguration *config = [[[[NRVAVideoConfiguration builder] withApplicationToken:@"YOUR_NEW_RELIC_TOKEN"] withObfuscationRules:@[ @{ @"regex": @"account-\\d+", @"replacement": @"ACCOUNT_ID" }, @{ @"regex": @"token=[^&\"]+", @"replacement": @"token=REDACTED" }, ]] build];[[[NRVAVideo newBuilder] withConfiguration:config] build];Swift
let config = NRVAVideoConfiguration.builder() .withApplicationToken("YOUR_NEW_RELIC_TOKEN") .withObfuscationRules([ ["regex": "account-\\d+", "replacement": "ACCOUNT_ID"], ["regex": "token=[^&\"]+", "replacement": "token=REDACTED"], ]) .build()NRVAVideo.newBuilder().with(configuration: config).build()작동 원리
- 에이전트는 원시 JSON 페이로드가 아닌 문자열 속성 값별로 룰을 적용합니다 ― 숫자 및 부울 속성은 영향을 받지 않습니다.
- 모든 룰은 일반, 라이브, QoE 및 크래시 복구 이벤트를 포함한 모든 발신 이벤트에 대해 실행됩니다.
- 룰은 선언한 순서대로 실행됩니다. 두 룰이 동일한 값과 일치할 수 있는 경우 순서가 중요합니다.
- 에이전트는
applicationToken또는 HTTP 인증 헤더를 절대 난독화하지 않습니다 ― 난독화는 이벤트 속성 값에만 적용됩니다.
엣지 케이스
| 시나리오 | 행동 |
|---|---|
| 구성된 룰 없음 | 에이전트는 성능에 영향을 주지 않고 모든 속성 값을 변경 없이 전달합니다. |
| 빈 대체 문자열 | 에이전트는 값에서 일치하는 콘텐츠를 제거합니다. |
| 잘못된 정규식 패턴 | withObfuscationRules: 이벤트를 전송하기 전 설정 시점에 NSInvalidArgumentException 을(를) 발생시킵니다. |
| 문자열이 아닌 속성 값 | 에이전트는 속성을 건너뜁니다. 문자열 값만 처리됩니다. |
| 잘못된 형식의 룰 어레이 항목 | 에이전트는 딕셔너리가 아닌 항목을 건너뛰고 로그에 경고를 기록합니다. |
applicationToken 및 HTTP 인증 헤더 | 이들은 이벤트 속성에 절대 포함되지 않으며 난독화 룰의 영향을 받지 않습니다. |
| 룰 순서 지정 | 룰은 어레이에 선언된 순서대로 실행됩니다. |
| 치명적인 백트래킹 | NSRegularExpression iOS에는 기본 제공 타임아웃이 없습니다. 제한 없는 중첩 수량자가 있는 패턴은 피하세요(예: (a+)+). 배포하기 전에 최악의 입력에 대해 룰을 테스트하세요. |