SYSLIB0001: De UTF-7-codering is onveilig
De UTF-7-codering is niet langer in breed gebruik tussen toepassingen en veel specificaties verbieden nu het gebruik ervan in uitwisseling. Het wordt ook af en toe gebruikt als een aanvalsvector in toepassingen die niet verwachten dat er UTF-7-gecodeerde gegevens optreden. Microsoft waarschuwt voor het gebruik van System.Text.UTF7Encoding omdat er geen foutdetectie wordt geboden.
Daarom worden de volgende API's gemarkeerd als verouderd, te beginnen in .NET 5. Het gebruik van deze API's genereert een waarschuwing SYSLIB0001
tijdens het compileren.
- Encoding.UTF7 Eigenschap
- UTF7Encoding Constructeurs
Tijdelijke oplossingen
Als u Encoding.UTF7 uw eigen protocol of UTF7Encoding bestandsindeling gebruikt:
Schakel over naar het gebruik Encoding.UTF8 of UTF8Encoding. UTF-8 is een industriestandaard en wordt breed ondersteund in talen, besturingssystemen en runtimes. Het gebruik van UTF-8 vereenvoudigt het toekomstige onderhoud van uw code en maakt het beter compatibel met de rest van het ecosysteem.
Als u een Encoding instantie vergelijkt met Encoding.UTF7:
In plaats daarvan kunt u overwegen om een controle uit te voeren op de bekende UTF-7-codepagina, namelijk
65000
. Door de codepagina te vergelijken, vermijdt u de waarschuwing en verwerkt u ook enkele edge-gevallen, bijvoorbeeld als iemand het type aangeroepen of subklasse heeft aangeroepennew UTF7Encoding()
.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. } }
Een waarschuwing onderdrukken
Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Als u alle SYSLIB0001
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.