Diretrizes para Codificação Segura

Segurança baseada em evidência e code access security fornecem mecanismos poderosos, explícitos para implementar a segurança. A maioria dos códigos de aplicativos podem simplesmente usar a infra-estrutura implementada pelo.NET Framework. Em alguns casos, específicas do aplicativo for necessário segurança adicional, criado, estendendo o sistema de segurança ou usando novos métodos ad hoc.

Usando o.NET Framework imposta permissões e outra imposição no seu código, você deve colocar barreiras para evitar que códigos mal-intencionados a obtenção de informações que não deseja que ele tenha ou executar outras ações indesejáveis. Além disso, você deve alcançar um equilíbrio entre segurança e usabilidade em todos os cenários esperados usando código confiável.

Esta visão geral descreve as diferentes maneiras de código pode ser projetado para trabalhar com o sistema de segurança.

Observação

No .NET Framework versão 4, houve uma mudança importante para o.NET Framework e terminologia. Para obter mais informações sobre essas alterações, consulte Alterações de segurança na.NET Framework 4.

Código de segurança neutro

O código de segurança neutra não faz nada de explícita com o sistema de segurança. Ele executa com quaisquer permissões recebe. Embora os aplicativos que não conseguem capturar exceções de segurança associadas a operações protegidas (como usar arquivos, rede e assim por diante) podem resultar em uma exceção não tratada, código de segurança neutro ainda aproveita o.Tecnologias de segurança do NET Framework.

Uma biblioteca de segurança neutro tem características especiais que você deve entender. Suponha que sua biblioteca fornece os elementos de API que usam arquivos ou chamam código não gerenciado; Se seu código não tiver a permissão correspondente, ele não será executado conforme descrito. No entanto, mesmo se o código tiver a permissão, qualquer código de aplicativo que chama deve ter a mesma permissão para trabalhar. Se o código de chamada não tiver a permissão certa, um SecurityException aparece como resultado do código acesso segurança stack walk.

Código do aplicativo não é um componente reutilizável

Se seu código fizer parte de um aplicativo que não será chamado por outro código, a segurança é simple e codificação especial pode ser necessário. No entanto, lembre-se de que o código mal-intencionado pode chamar seu código. Enquanto a segurança de acesso ao código pode parar de códigos mal-intencionados acessem os recursos, esse código ainda pode ler os valores de seus campos ou propriedades que podem conter informações confidenciais.

Além disso, se o seu código aceita entrada do usuário da Internet ou de outras fontes não confiáveis, você deve ser cuidadoso de entradas mal intencionadas.

Gerenciado de Wrapper para a implementação de código nativo

Normalmente nesse cenário, algumas funcionalidades úteis é implementada em código nativo que você deseja disponibilizar para código gerenciado. Invólucros gerenciados são fáceis de gravação usando o platform invoke ou a interoperabilidade COM. No entanto, se você fizer isso, os chamadores de seus wrappers devem ter direitos de código não gerenciado para ter êxito. Sob a diretiva padrão, isso significa que o código baixado a partir de uma intranet ou Internet não funcionará com os wrappers.

Em vez de dar a todos os aplicativos que usam esses direitos do código não gerenciado de invólucros, é melhor dar esses direitos somente para o código de wrapper. Se não há recursos de expõe a funcionalidade subjacente e a implementação é segura da mesma forma, o wrapper só precisa declarar seus direitos, que permite que qualquer código para chamar através dele. Quando os recursos estão envolvidos, a codificação de segurança deve ser o mesmo no caso de código de biblioteca descrito na próxima seção. Porque o wrapper está potencialmente expondo a chamadores a esses recursos, verificação de cuidado com a segurança do código nativo é necessária e é responsabilidade do invólucro.

Código de biblioteca que expõe protegido a recursos

Esta é a mais poderosa e, portanto, potencialmente perigosa (se feito incorretamente) abordagem para a codificação de segurança: A biblioteca serve como uma interface para outros códigos para acessar determinados recursos que não estão disponíveis, assim como as classes da.NET Framework impor permissões para recursos que usam. Sempre que você exponha um recurso, o seu código deve primeiro exigem a permissão apropriada para o recurso (ou seja, ele deve executar uma verificação de segurança) e, em seguida, normalmente declarar seus direitos para executar a operação real.

Tópicos relacionados

Título

Descrição

Como: Executar o código parcialmente confiável em um modo seguro

Explica como executar um aplicativo parcialmente confiável em um ambiente de segurança restrito, que limita as permissões de acesso do código concedidas a ele.

Solicitações de permissão

Descreve como interagir com o.Sistema de segurança do NET Framework usando solicitações de segurança.

A proteção de dados de estado

Descreve como proteger membros particulares.

Protegendo o acesso do método

Descreve como ajudar a proteger os métodos seja chamado pelo código parcialmente confiável.

Protegendo o código Wrapper

Descreve questões de segurança para o código que encapsula o outro código.

Segurança e campos de matriz de somente leitura do público

Descreve questões de segurança para o código que usa matrizes de somente leitura públicas encontrados no.NET Framework, bibliotecas.

Protegendo a manipulação de exceção

Descreve questões de segurança para o tratamento de exceções.

Segurança e a entrada do usuário

Descreve questões de segurança para aplicativos que aceitam a entrada do usuário.

Segurança e considerações de Remoting

Descreve questões de segurança para aplicativos que se comunicam entre domínios de aplicativo.

Serialização e segurança

Descreve as questões de segurança durante a serialização de objetos.

Segurança e as condições de corrida

Descreve como evitar condições de corrida em seu código.

Geração de código de segurança e o sistema em funcionamento

Descreve questões de segurança para aplicativos que geram código dinâmico.

Permissões perigosas e administração da diretiva

Descreve as permissões que podem potencialmente permitir que a segurança a ser evitado.

Segurança e problemas de instalação

Descreve as considerações para o teste e a instalação de seu aplicativo.

Segurança de aplicativos da Web ASP.NET

Descreve a segurança do ASP.NET em detalhes e fornece instruções de uso-lo em seu código.

Segurança de Acesso de código

Descreve segurança de acesso ao código .NET Framework em detalhes e fornece instruções de uso-lo em seu código.

Segurança baseada em função

Descreve .NET Framework segurança baseada em função em detalhes e fornece instruções de uso-lo em seu código.