SYSLIB0001: A codificação UTF-7 é insegura
A codificação UTF-7 não é mais amplamente usada entre os aplicativos, e muitas especificações agora proíbem seu uso no intercâmbio. Também é ocasionalmente usado como um vetor de ataque em aplicativos que não preveem encontrar dados codificados em UTF-7. A Microsoft adverte contra o uso de porque não fornece deteção de System.Text.UTF7Encoding erros.
Consequentemente, as APIs a seguir são marcadas como obsoletas, começando no .NET 5. O uso dessas APIs gera aviso SYSLIB0001
em tempo de compilação.
- Encoding.UTF7 propriedade
- UTF7Encoding construtores
Soluções
Se estiver a utilizar Encoding.UTF7 ou UTF7Encoding dentro do seu próprio protocolo ou formato de ficheiro:
Mudar para utilizar Encoding.UTF8 ou UTF8Encoding. UTF-8 é um padrão da indústria e é amplamente suportado em idiomas, sistemas operacionais e tempos de execução. O uso do UTF-8 facilita a manutenção futura do seu código e o torna mais interoperável com o resto do ecossistema.
Se você estiver comparando uma Encoding instância com Encoding.UTF7:
Em vez disso, considere executar uma verificação na conhecida página de código UTF-7, que é
65000
. Ao comparar com a página de código, você evita o aviso e também lida com alguns casos de borda, como se alguém ligounew UTF7Encoding()
ou subclassificou o tipo.void DoSomething(Encoding enc) { // Don't perform the check this way. // It produces a warning and misses some edge cases. if (enc == Encoding.UTF7) { // Encoding is UTF-7. } // Instead, perform the check this way. if (enc != null && enc.CodePage == 65000) { // Encoding is UTF-7. } }
Suprimir um aviso
Se você precisar usar as APIs obsoletas, poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Para suprimir todos os SYSLIB0001
avisos em seu projeto, adicione uma <NoWarn>
propriedade ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.