Armazenando Informações Confidenciais Usando ASP.NET
Frequentemente em um aplicativo ASP.NET você é obrigado a fazer uso das informações altamente confidenciais.Por exemplo, talvez você precise usar uma identificação de usuário e senha para se conectar a um banco de dados ou você pode estar armazenando identificações dos usuários e senhas que clientes usam para acessar seu aplicativo.Embora seja possível usar camada de soquete seguro (SSL) para criptografar informações como ele é passado através da rede, essas informações também devem ser protegidas quando ela é armazenada tanto no servidor e quanto no cliente.Este tópico aborda algumas diretrizes gerais para armazenar informações confidenciais.
Observação: |
---|
Para obter mais informações sobre como armazenar informações confidenciais, consulte Aprimorando a segurança dos aplicativos da Web: Threats and Countermeasures no site do MSDN. |
Evitar Armazenar Informações Confidenciais Quando Possível
A melhor maneira para evitar expor informações confidenciais em um aplicativo é não armazená-las.Minimizar os locais onde informações confidenciais estão armazenadas.Evite armazenar informações confidenciais para seu aplicativo em um cookie ou um controle que é persistente em seu navegador, que poderia expor as informações confidenciais para clientes do seu aplicativo.Evite armazenar informações confidenciais em sua lógica do aplicativo.Em vez disso, recupere as informações confidenciais de uma localidade de configuração segura ou do cliente.
Criptografar Informações Confidenciais
Quando você armazena informações confidenciais, evite armazená-las como texto legível pelo usuário ou em um formato facilmente decodificado, tal como codificação Base64.Em vez disso, criptografe as informações de forma que, se esta estiver exposta para um invasor alguma forma, o invasor não possa determinar facilmente o que contém as informações confidenciais.
Se as informações confidenciais precisam somente ser verificadas e descriptografadas em um formato legível pelo usuário, não criptografe as informações confidenciais usando um hash unidirecional.Em seguida, ao comparar as informações confidenciais recebidas de uma fonte que está sendo validada, divida o valor recebido e compare os hashes para verificação.For example, if you are using ASP.NET Membership and Forms Authentication to provide user authentication for your application, set the password format to Hashed so that passwords are encrypted using a one-way hash when they are stored in the data source or compared for validation.
Quando armazenar informações confidenciais, como sequências de conexão, credenciais de usuário, ou chaves de criptografia no arquivo Web.config para um aplicativo, criptografe as seções confidenciais do arquivo Web.config usando um provedor de configuração protegida.For more information about protected configuration, see Criptografando informações de configuração usando configuração protegida.
For more information about using encryption to protect sensitive information, see .NET framework Cryptography Model.
Proteger Informações Confidenciais Usando Permissões
Ao armazenar informações confidenciais em arquivos, bancos de dados, registro ou outros locais, use listas de controle de acesso NTFS e permissões de banco de dados para restringir o acesso a informações somente para as fontes necessárias e para o acesso de solicitação.For more information, see your database documentation or ASP.NET Required Access Control Lists (ACLs).