Serialize
및 Deserialize
메서드는 BinaryFormatter, Formatter, IFormatter에서 이제 사용되지 않으며, 경고로 처리됩니다.
BinaryFormatter 또한 ASP.NET 앱에는 기본적으로 serialization이 금지됩니다.
비고
.NET 7에서 영향을 받는 API 는 오류로 더 이상 사용되지 않음으로 간주됩니다. 자세한 내용은 BinaryFormatter 직렬화 API가 컴파일러 오류를 생성한다는 내용을 참조하세요.
변경 내용 설명
보안 취약성BinaryFormatter으로 인해 다음 메서드는 이제 사용되지 않으며 IDSYSLIB0011
를 사용하여 컴파일 시간 경고를 생성합니다. 또한 ASP.NET Core 5.0 이상 앱에서는 웹앱이 NotSupportedException 기능을 다시 사용하도록 설정하지 않은 경우 BinaryFormatter 예외를 던집니다.
다음 serialization 메서드도 사용되지 않으며 경고를 SYSLIB0011
생성하지만 동작은 변경되지 않습니다.
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
도입된 버전
5.0
변경 이유
.NET 에코시스템 내에서 BinaryFormatter 사용 중단을 도모하려는 노력의 일환으로 이러한 메서드는 사용되지 않는 것으로 표시되었습니다.
권장 작업
코드에서 BinaryFormatter 사용을 중지하세요. JsonSerializer 또는 XmlSerializer을(를) 사용하는 것을 고려하세요. 자세한 내용은 BinaryFormatter 보안 가이드를 참조하세요.
컴파일 시간 경고 BinaryFormatter를 일시적으로 억제할 수 있습니다, 이는
SYSLIB0011
입니다. 이 옵션을 선택하기 전에 코드에서 위험을 철저히 평가하는 것이 좋습니다. 경고를 표시하지 않는 가장 쉬운 방법은 개별 호출 사이트를 지시문으로#pragma
둘러싸는 것입니다.// Now read the purchase order back from disk using (var readStream = new FileStream("myfile.bin", FileMode.Open)) { var formatter = new BinaryFormatter(); #pragma warning disable SYSLIB0011 return (PurchaseOrder)formatter.Deserialize(readStream); #pragma warning restore SYSLIB0011 }
프로젝트 파일에서 경고를 표시하지 않을 수도 있습니다.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <!-- Disable "BinaryFormatter is obsolete" warnings for entire project --> <NoWarn>$(NoWarn);SYSLIB0011</NoWarn> </PropertyGroup>
프로젝트 파일에서 경고를 표시하지 않으면 프로젝트의 모든 코드 파일에 대해 경고가 표시되지 않습니다.
SYSLIB0011
를 억제해도 다른 사용되지 않는 API를 사용하여 발생하는 경고는 억제되지 않습니다.ASP.NET 앱에서 계속 사용 BinaryFormatter 하려면 프로젝트 파일에서 다시 사용하도록 설정할 수 있습니다. 그러나 이 작업을 수행하지 않는 것이 좋습니다. 자세한 내용은 BinaryFormatter 보안 가이드를 참조하세요.
<PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- Warning: Setting the following switch is *NOT* recommended in web apps. --> <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization> </PropertyGroup>
권장 작업에 대한 자세한 내용은 BinaryFormatter 폐기 및 비활성화 오류 해결을 참조하세요.
영향을 받는 API
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize
- System.Runtime.Serialization.Formatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatter.Deserialize(Stream)
- System.Runtime.Serialization.IFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.IFormatter.Deserialize(Stream)
참고하십시오
.NET