보안 취약성BinaryFormatter으로 인해 다음 API는 .NET 5에서 사용되지 않는 것으로 표시되었습니다. 코드에서 이를 사용하면 컴파일 시 경고 또는 오류가 SYSLIB0011 발생합니다.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
.NET 8부터 대부분의 프로젝트 형식에서는 런타임 시 BinaryFormatter.Serialize와 BinaryFormatter.Deserialize가 NotSupportedException를 throw합니다. 추가로 PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String)은(는) 경고로 더 이상 사용되지 않으며, 다음 API는 오류로 더 이상 사용되지 않습니다.
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
해결 방법
당신이 BinaryFormatter를 사용하고 있는 경우, 보안 및 안정성 결함으로 인해 다른 시스템으로 마이그레이션해야 합니다. 자세한 내용은 BinaryFormatter 및 관련 형식을 사용할 때의 역직렬화 위험 및 기본 설정 대안을 참조하세요.
경고 표시 안 함
사용되지 않는 API를 사용해야 하는 경우 코드 또는 프로젝트 파일에서 경고/오류를 표시하지 않을 수 있습니다.
단일 위반만 표시하지 않으려면 소스 파일에 전처리기 지시문을 추가하여 경고를 사용하지 않도록 설정한 다음 다시 사용하도록 설정합니다.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
프로젝트의 모든 SYSLIB0011 경고를 억제하려면, 프로젝트 파일에 <NoWarn> 속성을 추가하세요.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
자세한 내용은 경고 표시 안 함을 참조하세요.
참고하십시오
.NET