Privacidade e Segurança de Dados
A proteção e o gerenciamento de informações confidenciais em um aplicativo ADO.NET dependem 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 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 a Microsoft CryptoAPI 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 criptográficas específicas.
Ao contrário da criptografia, que permite que os dados sejam criptografados e, em seguida, descriptografados, o hashing de dados é um processo unidirecional. Os dados de hash são úteis quando você deseja evitar adulterações verificando se os dados não foram alterados: dadas 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. Garantindo a integridade dos dados com códigos de hash descreve como você pode gerar e verificar valores de hash.
Encriptação de ficheiros de configuração
Proteger o acesso à sua fonte de dados é um dos objetivos mais importantes ao proteger um 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 arquivos 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, número de cartão de crédito ou dados pessoais, há um 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, o 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 de memória com cadeias de caracteres não é determinística com a coleta de lixo do .NET. Você deve evitar usar as String classes e StringBuilder se seus dados forem realmente confidenciais.
A SecureString classe fornece métodos para criptografar texto usando a API de proteção de dados (DPAPI) na memória. A cadeia de caracteres é então 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 SecureStringarquivo . Você pode inicializar uma nova instância de SecureString
sem valor ou passando-lhe 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.