CA2109: Görünen olay işleyicileri gözden geçirin

TypeName

ReviewVisibleEventHandlers

CheckId

CA2109

Kategori

Microsoft.Security

Değişiklik kesiliyor

Bölme

Neden

Bir ortak veya korumalı olay işleme yöntemi algılandı.

Kural Tanımı

İnceleme gerektiren bir güvenlik sorunu dışarıdan görünen bir olay işleme yöntemi sunar.

Olay işleme yöntemleri değil çıkarılabilir sürece kesinlikle gerekli.İşleyici ve olay imzalar eşleştiği sürece herhangi bir olay hem de sunulan yöntemini çağıran bir temsilci türü, bir olay işleyicisi eklenebilir.Olayları olabilecek herhangi bir kod tarafından oluşturuldu ve sık bir düğmeyi tıklatmak gibi kullanıcı eylemlerine son derece güvenilir bir sistem kodu tarafından oluşturuldu.Bir olay işleme yöntemi için bir güvenlik denetimi ekleme kodu yöntemini çağıran bir olay işleyicisi kaydetmesini engellemez.

İsteğe bağlı bir olay işleyicisi tarafından başlatılan bir yöntem güvenilir koruyamaz.Güvenlik gerektiren Yardım Arayanların çağrı yığını üzerinde incelenerek kod güvenilmeyen Arayanlara korumak.Olay işleyicinin yöntemleri çalıştırdığınızda, bir olay için bir olay işleyicisi ekler kodu çağrı yığını üzerinde mutlaka yok.Olay işleyicisi yöntemi çağrıldığında bu nedenle çağrı yığını yalnızca yüksek oranda arayanlar güvenilen.Bu olay işleyicisi yöntemi tarafından başarılı olması için yapılan talepleri neden olur.Ayrıca, yöntem çağrıldığında talep edilen izni hattının.Bu nedenle, bu kuralı ihlal düzeltme değil riski yalnızca olay işleme yöntemi inceledikten sonra belirlenebilir.Kodunuzu gözden geçirdiğinizde, aşağıdaki konuları göz önünde bulundurun:

  • Kendi olay işleyicisi, tehlikeli ya da etkilenme izinleri mekanizmanın veya yönetilmeyen kod izni engelleniyor gibi herhangi bir işlem yapmaz?

  • Yığında arayanlar onu ile herhangi bir zamanda yalnızca yüksek oranda çalışabildiğinden kodunuzu gelen ve giden güvenlik tehditleri nelerdir güvenilir?

İhlalleri düzeltmek nasıl

Bu kuralı ihlal düzeltmek için yöntemi gözden geçirin ve aşağıdakileri değerlendirin:

  • Olay işleme yöntemi genel olmayan emin olabilirim?

  • Olay işleyicisi dışında tüm tehlikeli işlevselliği taşıyabilir miyim?

  • Güvenlik isteğe bağlı uygulanan, bu başka bir biçimde yapılabilir?

Uyarıları ne zaman

Kodunuzu bir güvenlik tehdidi teşkil değil emin olmak için bir uyarı bu kuraldan yalnızca dikkatli güvenlik incelemesi sonrasında göstermez.

Örnek

Aşağıdaki kod, kötü amaçlı kod tarafından yanlış bir olay işleme yöntemini gösterir.

using System;
using System.Security;
using System.Security.Permissions;

namespace EventSecLibrary
{
   public class HandleEvents
   {
      // Due to the access level and signature, a malicious caller could  
      // add this method to system-triggered events where all code in the call 
      // stack has the demanded permission. 

      // Also, the demand might be canceled by an asserted permission.

      [SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode=true)]

      // Violates rule: ReviewVisibleEventHandlers. 
      public static void SomeActionHappened(Object sender, EventArgs e)
      {
         Console.WriteLine ("Do something dangerous from unmanaged code.");
      }

   }
}

Ayrıca bkz.

Başvuru

CodeAccessPermission.Demand

EventArgs

Kavramlar

Güvenlik Talepleri