Privacidade e segurança de dados
Proteger e gerenciar informações confidenciais em um aplicativo ADO.NET depende dos produtos e das tecnologias subjacentes usados para criá-lo. O ADO.NET não fornece serviços diretamente para proteger nem criptografar dados.
Criptografia e códigos de hash
As classes do namespace System.Security.Cryptography do .NET Framework podem ser usadas nos aplicativos ADO.NET para impedir que os dados sejam lidos ou modificados por terceiros não autorizados. Algumas classes são wrappers da CryptoAPI da Microsoft não gerenciada, enquanto outras são implementações gerenciadas. O tópico Serviços de criptografia fornece uma visão geral da criptografia no .NET Framework, descreve como a criptografia é implementada e como você pode executar tarefas de criptografia específicas.
Ao contrário da criptografia, que permite que os dados sejam criptografados e descriptografados, o hash de dados é um processo unidirecional. O hash de dados é útil quando você deseja evitar a adulteração verificando se os dados não foram alterados: considerando cadeias de caracteres de entrada idênticas, os algoritmos de hash sempre produzem valores de saída curta idênticos que podem ser comparados com facilidade. Como garantir a integridade dos dados com os códigos hash descreve como você pode gerar e verificar os valores de hash.
Como criptografar 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 nos arquivos de configuração são armazenados 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 tenha sido projetada principalmente para o ASP.NET, a configuração protegida também pode ser usada para criptografar seções do arquivo de configuração em aplicativos do Windows. Para obter mais informações, consulte Protegendo informações de conexão.
Como proteger valores de cadeia de caracteres na memória
Se um objeto String contiver informações confidenciais, como uma senha, um número de cartão de crédito ou dados pessoais, haverá 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.
Uma String é imutável. O valor dela não pode ser modificado depois que ela é criada. As alterações que parecem modificar o valor da cadeia de caracteres realmente criam uma instância de um objeto String 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 dados são realmente confidenciais.
A classe SecureString fornece métodos para criptografar o 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 método ToString
usado para ler rapidamente o conteúdo de uma SecureString. Você pode inicializar uma nova instância de SecureString
sem nenhum valor ou transmitindo a ela um ponteiro para uma matriz de objetos Char. Em seguida, você pode usar os vários métodos da classe para trabalhar com a cadeia de caracteres.