Partilhar via


Revisão visível evento manipuladores

TypeName

ReviewVisibleEventHandlers

CheckId

CA2109

Category (Categoria)

Microsoft.segurança

Quebrando alterar

Quebrando

Causa

Foi detectado um método de manipulação de evento público ou protegido.

Descrição da regra

Um visível externamente evento-método de manipulação apresenta um problema de segurança que requer revisão.

evento-métodos de manipulação não deve ser exposta a menos que absolutamente necessário.Possível adicionar um manipulador de eventos, um tipo delegado, que chama o método exposto a qualquer evento, desde que coincidir com sistema autônomo assinaturas e manipulador de eventos.sistema autônomo eventos podem potencialmente ser disparados por qualquer código e com freqüência são gerados pelo sistema altamente confiável código em resposta às ações do usuário, sistema autônomo clicar um botão.Adicionando uma verificação de segurança a um método de tratamento de evento não impede que código Registrando um manipulador de eventos que invoca o método.

Uma demanda de forma confiável não pode proteger um método chamado por um manipulador de eventos.Demandas de segurança ajuda proteger código de não confiáveis telefonar ers, examinando ers telefonar sobre o telefonar pilha.Código que adiciona um manipulador de eventos a um evento não está necessariamente presente no telefonar empilhar quando executar métodos do manipulador de eventos.Portanto, o telefonar pilha pode apenas altamente confiam telefonar ers quando o método do manipulador de eventos é chamado.Isso faz com que as demandas feitas pela manipulador de eventos método seja bem-sucedida.Além disso, a permissão usados desse sistema operacional pode ser declarada quando o método é chamado.Por esses motivos, o risco de não corrigir uma violação dessa regra só pode ser avaliado após a revisão do evento-método de manipulação.Ao revisar seu código, considere os seguintes problemas:

  • Faz seu manipulador de eventos executar quaisquer operações que são perigosas ou pode ser explorada, sistema autônomo declarar permissões ou eliminando a permissão de código não gerenciado?

  • Quais são as ameaças de segurança para e de seu código porque ele pode executado a qualquer momento com apenas altamente confiável para os chamadores na pilha?

Como corrigir violações

Para corrigir uma violação dessa regra, examine o método e avaliar o seguinte:

  • Você pode tornar o evento-método não público de manipulação?

  • Você pode mover toda a funcionalidade perigosa do evento manipulador?

  • Se uma demanda de segurança é imposta, pode isso ser feito de alguma Outros maneira?

Quando suprimir avisos

Elimina um aviso esta regra somente após uma revisão de segurança cuidadosa para certificar-se de que seu código não representem uma ameaça de segurança.

Exemplo

O código a seguir mostra um método de manipulação de eventos que pode ser usados incorretamente por código mal-intencionado.

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.");
      }

   }
}

Consulte também

Conceitos

Demandas de segurança

Referência

CodeAccessPermission.Demand

System.EventArgs