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