> 백엔드 개발 > C++ > 역직렬화를 특정 유형으로 제한하는 경우에도 Json.Net의 `TypeNameHandling.Auto`를 사용한 자동 JSON 역직렬화가 안전합니까?

역직렬화를 특정 유형으로 제한하는 경우에도 Json.Net의 `TypeNameHandling.Auto`를 사용한 자동 JSON 역직렬화가 안전합니까?

Mary-Kate Olsen
풀어 주다: 2025-01-07 14:16:41
원래의
874명이 탐색했습니다.

Is Automatic JSON Deserialization with Json.Net's `TypeNameHandling.Auto` Secure, Even When Limiting Deserialization to a Specific Type?

Json.Net TypeNameHandling Auto로 인해 외부 JSON이 취약할 수 있나요?

문제:

사용자가 사용자 정의 JSON 개체를 업로드하는 웹 사이트 애플리케이션에서는 다음으로 인해 발생하는 잠재적인 위협을 인식하는 것이 필수적입니다. 자동화된 JSON 유형 역직렬화. 문제는 역직렬화된 유일한 유형이 특정 유형(예: MyObject)이고 MyObject의 멤버 중 System.Object 또는 동적 유형이 없는 경우 자동 유형 역직렬화가 취약성에 취약한지 여부입니다.

답변:

이러한 조건을 준수하면 위험이 크게 줄어들지만 완전한 보호가 보장되지는 않습니다. Json.Net의 TypeNameHandling 설정을 Auto로 설정하면 MyObject에 해당 필드가 없는 경우에도 "$type" 정보를 기반으로 개체를 생성할 수 있습니다.

자세한 설명:

Json.Net을 대상으로 하는 공격은 TypeNameHandling 설정을 악용하여 "공격 가젯"(수신 시스템을 손상시키도록 설계된 개체)을 구성합니다. Json.Net의 보호 메커니즘에는 알 수 없는 속성 무시 및 유형 호환성 확인이 포함됩니다. 그러나 유형이 지정되지 않은 명백한 멤버 없이도 공격 가젯을 구성할 수 있는 시나리오가 있습니다.