Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Belirli özellikler aracılığıyla kullanıcı verilerinin yanlışlıkla sızmasını önlemek için yeni güvenlik çözümleyicileri kullanıma sunulmuştur. Bu çözümleyiciler, açık serileştirme ayarları olmayan özellikleri tanımlayarak en iyi yöntemleri uygular, örneğin:
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
-
ShouldSerialize[propertyName]yöntemleri
Çözümleyiciler aşağıdaki gibi uyarılar üretir:
WFO1000: 'property' özelliği, özellik içeriği için kod serileştirmesini yapılandırmaz.
Varsayılan olarak, her çözümleyici bir hata oluşturur ve geliştiricilerin geliştirme sürecinin başlarındaki olası güvenlik ve veri sızıntısı sorunları hakkında bilgi edinmesini sağlar.
Bu değişiklik, düzgün serileştirme uygulamalarını zorunlu tutarak Windows Forms uygulamalarının güvenliğini ve sürdürülebilirliğini artırmayı ve böylece verilerin yanlışlıkla açığa çıkarma riskini azaltmayı amaçlar.
Önceki davranış
Daha önce, Windows Forms ve UserControl denetimlerindeki özellikler, serileştirme davranışı açıkça yapılandırılmadan tasarımcı tarafından seri hale getirilebiliyorlardı. Bu, istenmeyen verilerin oluşturulan koda veya kaynak dosyalarına eklenmesine neden olarak olası bir güvenlik riski oluşturabilir. Bu davranış özellikle özel iş UserControl kolu nesnelerinde sorunluydu ve burada kullanıma sunulmaması gereken hassas verilerin seri hale getirilmesini göz ardı etmek kolaydı. Örneğin, kullanıcı verileri veya iç yapılandırmalar gibi hassas bilgiler içeren özellikler doğrudan tasarımcı tarafından oluşturulan .cs dosyalarına yazılabilir veya .resx dosyalarına eklenebilir.
Yeni davranış
.NET 9'dan başlayarak, yeni Windows Forms güvenlik çözümleyicileri denetimlerdeki ve UserControl nesnelerdeki özelliklerin seri hale getirilmesi üzerinde daha sıkı denetimler uygular. Varsayılan olarak, bir özelliğin CodeDOM serileştirme davranışı açıkça tanımlanmamışsa çözümleyici bir hata üretir. Bu davranış, özelliklerin yanlışlıkla seri hale getirilmemesini sağlar. Çözümleyicinin önem derecesini değiştirmek veya hatayı engellemek için .editorconfig ayarlarını değiştirebilirsiniz.
Sürüm kullanıma sunulmuştur
.NET 9 RC 1
Hataya neden olan değişikliğin türü
Bu değişiklik kaynak uyumluluğunu etkileyebilir.
Değişiklik nedeni
Bu değişiklik iki birincil nedenden dolayı yapılmıştır:
Gelişmiş güvenlik: Çözümleyici, açık serileştirme tanımlarını zorlayarak özellikle LOB uygulamalarında istenmeyen verilerin açığa çıkarılma riskini önemli ölçüde azaltır. Bu geçmişte oldu ve artık BinaryFormatter seri hale getirici kaldırma bağlamında daha da gerekli. İlk olarak yanlışlıkla seri hale getirilmesini mümkün olduğunca önleyerek, ayrılmış tür dönüştürücüsü olmayan türler için kaynak dosyalarında ikili serileştirmeyle ilgili geriye dönük uyumluluk veya güvenlik sorunları olmaz.
Geliştirilmiş kod netliği ve sürdürülebilirliği: Bu özellik, kod incelemelerine ve gelecekteki bakımlara yardımcı olan serileştirme davranışının saydam ve kasıtlı olmasını sağlar.
Önerilen eylem
Çözümleyici tarafından bayrak eklenmiş özellikleri gözden geçirin ve uygun serileştirme ayarlarını gerektiği gibi yapılandırın.
Hızlı bir düzeltme için (önerilmez), çözüm klasöründe veya proje klasörü düzeyinde bir .editorconfig dosyasına aşağıdaki girdiyi ekleyin:
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
Etkilenen API’ler
- Yok