Share via


Protegendo informações de conexã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. Armazenar informações de conexão em texto simples ou mantê-las na memória corre o risco de comprometer todo o sistema. As cadeias de conexão incorporadas no código-fonte podem ser lidas usando o Ildasm.exe (IL Disassembler) para exibir a linguagem intermediária comum (CIL) em um assembly compilado.

Vulnerabilidades de segurança envolvendo cadeias de conexão podem surgir com base no tipo de autenticação usado, como as cadeias de conexão são persistidas na memória e no disco e as técnicas usadas para construí-las em tempo de execução.

Utilizar Autenticação do Windows

Para ajudar a limitar o acesso à sua fonte de dados, você deve proteger as informações de conexão, como ID de usuário, senha e nome da fonte de dados. Para evitar a exposição de informações do usuário, recomendamos o uso da autenticação do Windows (às vezes chamada de segurança integrada) sempre que possível. A autenticação do Windows é especificada em uma cadeia de conexão usando as Integrated Security palavras-chave ou Trusted_Connection , eliminando a necessidade de usar um ID de usuário e senha. Ao usar a autenticação do Windows, os usuários são autenticados pelo Windows e o acesso aos recursos do servidor e do banco de dados é determinado pela concessão de permissões a usuários e grupos do Windows.

Para situações em que não é possível usar a autenticação do Windows, você deve usar cuidado extra porque as credenciais do usuário são expostas na cadeia de conexão. Em um aplicativo ASP.NET, você pode configurar uma conta do Windows como uma identidade fixa que é usada para se conectar a bancos de dados e outros recursos de rede. Você habilita a representação no elemento identity no arquivo web.config e especifica um nome de usuário e senha.

<identity impersonate="true"
        userName="MyDomain\UserAccount"
        password="*****" />

A conta de identidade fixa deve ser uma conta de baixo privilégio à qual foram concedidas apenas as permissões necessárias no banco de dados. Além disso, você deve criptografar o arquivo de configuração para que o nome de usuário e a senha não sejam expostos em texto não criptografado.

Evite armazenar cadeias de conexão para um OleDbConnection em um arquivo UDL (Universal Data Link). As UDLs são armazenadas em texto não criptografado e não podem ser criptografadas. Um arquivo UDL é um recurso externo baseado em arquivo para seu aplicativo e não pode ser protegido ou criptografado usando o .NET Framework.

Evite ataques de injeção com construtores de cadeias de conexão

Um ataque de injeção de cadeia de conexão pode ocorrer quando a concatenação dinâmica de cadeia de caracteres é usada para criar cadeias de conexão com base na entrada do usuário. Se a entrada do usuário não for validada e o texto ou caracteres mal-intencionados não forem escapados, um invasor poderá acessar dados confidenciais ou outros recursos no servidor. Para resolver esse problema, o ADO.NET 2.0 introduziu novas classes de construtor de cadeia de conexão para validar a sintaxe da cadeia de conexão e garantir que parâmetros adicionais não sejam introduzidos. Para obter mais informações, consulte Construtores de cadeias de conexão.

Use Persist Security Info=False

O valor padrão para Persist Security Info é false, recomendamos usar esse padrão em todas as cadeias de conexão. Configuração Persist Security Info ou trueyes permite que informações confidenciais de segurança, incluindo o ID de usuário e a senha, sejam obtidas de uma conexão depois que ela for aberta. Quando Persist Security Info é definido como false ou no, as informações de segurança são descartadas depois de serem usadas para abrir a conexão, garantindo que uma fonte não confiável não tenha acesso a informações confidenciais de segurança.

Criptografar arquivos de configuração

Você também pode armazenar cadeias de conexão em arquivos de configuração, o que elimina a necessidade de incorporá-las no código do seu aplicativo. Os arquivos de configuração são arquivos XML padrão para os quais o .NET Framework definiu um conjunto comum de elementos. As cadeias de conexão em arquivos de configuração geralmente são armazenadas dentro do <elemento connectionStrings> no app.config para um aplicativo do Windows ou no arquivo web.config para um aplicativo ASP.NET. Para obter mais informações sobre os conceitos básicos de armazenamento, recuperação e criptografia de cadeias de conexão de arquivos de configuração, consulte Cadeias de conexão e arquivos de configuração.

Consulte também