Compartilhar via


Privacidade e segurança de dados

Proteger e gerenciar informações confidenciais em um aplicativo ADO.NET depende dos produtos e tecnologias subjacentes usados para criá-lo. ADO.NET não fornece diretamente serviços para proteger ou criptografar dados.

Criptografia e códigos de hash

As classes no namespace do .NET Framework System.Security.Cryptography podem ser usadas de seus aplicativos ADO.NET para impedir que os dados sejam lidos ou modificados por terceiros não autorizados. Algumas classes são wrappers para o Microsoft CryptoAPI não gerenciado, enquanto outras são implementações gerenciadas. O tópico Serviços Criptográficos fornece uma visão geral da criptografia no .NET Framework, descreve como a criptografia é implementada e como você pode executar tarefas criptográficas específicas.

Ao contrário da criptografia, que permite que os dados sejam criptografados e descriptografados, os dados de hash são um processo unidirecional. Os dados de hash são úteis quando você deseja evitar a adulteração verificando se os dados não foram alterados: dadas as cadeias de caracteres de entrada idênticas, os algoritmos de hash sempre produzem valores de saída curtos idênticos que podem ser facilmente comparados. Garantir a integridade de dados com códigos hash descreve como você pode gerar e verificar valores de hash.

Criptografando arquivos de configuração

A proteção do acesso à fonte de dados é essencial para a segurança do aplicativo. Uma cadeia de conexão apresenta uma vulnerabilidade potencial se não estiver protegida. As cadeias de conexão salvas em arquivos de configuração são armazenadas em arquivos XML padrão para os quais o .NET Framework definiu um conjunto comum de elementos. A configuração protegida permite criptografar informações confidenciais em um arquivo de configuração. Embora projetada principalmente para aplicativos ASP.NET, a configuração protegida também pode ser usada para criptografar seções de arquivo de configuração em aplicativos do Windows. Para obter mais informações, consulte Protegendo informações de conexão.

Protegendo valores de cadeia de caracteres na memória

Se um String objeto contiver informações confidenciais, como uma senha, um número de cartão de crédito ou dados pessoais, há o risco de que as informações possam ser reveladas depois de serem usadas porque o aplicativo não pode excluir os dados da memória do computador.

A String é imutável; seu valor não pode ser modificado depois de criado. As alterações que parecem modificar o valor da cadeia de caracteres realmente criam uma nova instância de um String objeto na memória, armazenando os dados como texto sem formatação. Além disso, não é possível prever quando as instâncias de cadeia de caracteres serão excluídas da memória. A recuperação da memória com cadeias de caracteres não é determinística com a coleta de lixo do .NET. Você deve evitar usar as classes String e StringBuilder se os seus dados forem realmente confidenciais.

A SecureString classe fornece métodos para criptografar texto usando a DPAPI (API de Proteção de Dados) na memória. Em seguida, a cadeia de caracteres é excluída da memória quando não é mais necessária. Não há nenhum ToString método para ler rapidamente o conteúdo de um SecureString. Você pode inicializar uma nova instância SecureString sem valor ou passando um ponteiro para uma matriz de Char objetos. Em seguida, você pode usar os vários métodos da classe para trabalhar com a cadeia de caracteres.

Consulte também