Aracılığıyla paylaş


SYSLIB0001: UTF-7 kodlaması güvenli değil

UTF-7 kodlaması artık uygulamalar arasında geniş kullanımda değildir ve birçok belirtim artık değişimde kullanılmasını yasaklar. Ayrıca bazen UTF-7 ile kodlanmış verilerle karşılaşmayı öngörmeyecek uygulamalarda bir saldırı vektöru olarak da kullanılır. Microsoft, hata algılama sağlamadığından kullanımına System.Text.UTF7Encoding karşı uyarır.

Sonuç olarak, aşağıdaki API'ler .NET 5'te başlayarak eski olarak işaretlenir. Bu API'lerin kullanılması derleme zamanında uyarı SYSLIB0001 oluşturur.

Geçici Çözümler

  • Kendi protokolünüzü veya UTF7Encoding dosya biçiminizi kullanıyorsanız Encoding.UTF7 veya kullanıyorsanız:

    veya UTF8Encodingkullanmaya Encoding.UTF8 geçin. UTF-8 bir endüstri standardıdır ve diller, işletim sistemleri ve çalışma zamanları arasında yaygın olarak desteklenir. UTF-8'i kullanmak kodunuzun gelecekteki bakımlarını kolaylaştırır ve ekosistemin geri kalanıyla daha birlikte çalışabilir hale getirir.

  • Bir Encoding örneği Encoding.UTF7ile karşılaştırıyorsanız:

    Bunun yerine, iyi bilinen UTF-7 kod sayfasında (olan 65000) bir denetim gerçekleştirmeyi göz önünde bulundurun. Kod sayfasıyla karşılaştırarak uyarıdan kaçınmış olursunuz ve ayrıca biri tarafından çağrılır new UTF7Encoding() veya türü alt sınıflandırmış gibi bazı uç durumlarını işlersiniz.

    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.
        }
    }
    

Uyarıyı gizleme

Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.

Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.

// Disable the warning.
#pragma warning disable SYSLIB0001

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0001

Projenizdeki tüm SYSLIB0001 uyarıları engellemek için proje dosyanıza bir <NoWarn> özellik ekleyin.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
  </PropertyGroup>
</Project>

Daha fazla bilgi için bkz . Uyarıları gizleme.

Ayrıca bkz.