SYSLIB0001: Pengodean UTF-7 tidak aman
Pengodean UTF-7 tidak lagi digunakan secara luas di antara aplikasi, dan banyak spesifikasi sekarang melarang penggunaannya dalam pertukaran. Ini juga kadang-kadang digunakan sebagai vektor serangan dalam aplikasi yang tidak mengantisipasi menemukan data yang dikodekan UTF-7. Microsoft memperingatkan terhadap penggunaan System.Text.UTF7Encoding karena tidak memberikan deteksi kesalahan.
Akibatnya, API berikut ditandai usang, mulai dari .NET 5. Penggunaan API ini menghasilkan peringatan SYSLIB0001
pada waktu kompilasi.
- Properti Encoding.UTF7
- UTF7Encoding Konstruktor
Penyelesaian masalah
Jika Anda menggunakan Encoding.UTF7 atau UTF7Encoding dalam protokol atau format file Anda sendiri:
Beralih ke menggunakan Encoding.UTF8 atau UTF8Encoding. UTF-8 adalah standar industri dan didukung secara luas di seluruh bahasa, sistem operasi, dan runtime. Menggunakan UTF-8 memudahkan pemeliharaan kode Anda di masa mendatang dan membuatnya lebih dapat dioperasikan dengan sisa ekosistem.
Jika Anda membandingkan Encoding instans dengan Encoding.UTF7:
Sebagai gantinya, pertimbangkan untuk melakukan pemeriksaan terhadap halaman kode UTF-7 terkenal, yaitu
65000
. Dengan membandingkan dengan halaman kode, Anda menghindari peringatan dan juga menangani beberapa kasus tepi, seperti jika seseorang memanggilnew UTF7Encoding()
atau mensubkelas jenisnya.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. } }
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Untuk menekan semua SYSLIB0001
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.