Json.Net TypeNameHandling Auto로 인해 외부 JSON이 취약할 수 있나요?
문제:
사용자가 사용자 정의 JSON 개체를 업로드하는 웹 사이트 애플리케이션에서는 다음으로 인해 발생하는 잠재적인 위협을 인식하는 것이 필수적입니다. 자동화된 JSON 유형 역직렬화. 문제는 역직렬화된 유일한 유형이 특정 유형(예: MyObject)이고 MyObject의 멤버 중 System.Object 또는 동적 유형이 없는 경우 자동 유형 역직렬화가 취약성에 취약한지 여부입니다.
답변:
이러한 조건을 준수하면 위험이 크게 줄어들지만 완전한 보호가 보장되지는 않습니다. Json.Net의 TypeNameHandling 설정을 Auto로 설정하면 MyObject에 해당 필드가 없는 경우에도 "$type" 정보를 기반으로 개체를 생성할 수 있습니다.
자세한 설명:
Json.Net을 대상으로 하는 공격은 TypeNameHandling 설정을 악용하여 "공격 가젯"(수신 시스템을 손상시키도록 설계된 개체)을 구성합니다. Json.Net의 보호 메커니즘에는 알 수 없는 속성 무시 및 유형 호환성 확인이 포함됩니다. 그러나 유형이 지정되지 않은 명백한 멤버 없이도 공격 가젯을 구성할 수 있는 시나리오가 있습니다.
권장사항:
In 결론적으로 제공된 조건은 위험을 크게 완화하지만 완전한 보안을 보장하지는 않는다는 점에 유의하는 것이 중요합니다. Json.Net의 TypeNameHandling 자동 설정은 공격 가젯 생성을 잠재적으로 용이하게 할 수 있으므로 사용자 정의 직렬화 바인더와 같은 추가 예방 조치가 필요합니다.
위 내용은 역직렬화를 특정 유형으로 제한하는 경우에도 Json.Net의 `TypeNameHandling.Auto`를 사용한 자동 JSON 역직렬화가 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!