Compartilhar via


Proteger as informações de conexão

A proteção do acesso à fonte de dados é essencial para a segurança do aplicativo. Uma cadeia de conexão apresenta uma possível vulnerabilidade se não estiver protegida. Armazenar as informações de conexão em texto sem formatação ou persistir-la na memória pode comprometer seu sistema inteiro. As cadeias de conexão inseridas 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.

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

Importante

A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.

Usar Autenticação do Windows

Para ajudar a limitar o acesso a sua fonte de dados, você deverá proteger as informações de conexão como a identificação do usuário, senha e nome da fonte de dados. Para evitar a exposição das informações do usuário, recomendamos o uso da autenticação do Windows (às vezes chamada de segurança integrada) para fontes de dados no local. No entanto, ao se conectar ao SQL do Azure, você deve usar as identidades gerenciadas para os recursos do Azure, pois a autenticação do Windows é especificada em uma cadeia de conexão usando o parâmetro Integrated Security ou Trusted_Connection palavras-chave, eliminando a necessidade de usar um ID de usuário e uma senha. Ao usar a autenticação do Windows, os usuários são autenticados pelo Windows e o acesso ao servidor e os recursos de banco de dados são determinados concedendo permissões a usuários e grupos do Windows.

Em situações em que não é possível usar a autenticação do Windows, é preciso ter cuidado adicional, pois as credenciais do usuário são expostas na cadeia de conexão. Em um aplicativo do 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 de identidade no arquivo web.config e especifica um nome de usuário e uma senha.

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

A conta de identidade fixa deve ser uma conta de privilégios baixos que tem concedidas somente as permissões necessárias no banco de dados. Além disso, você deve criptografar o arquivo de configuração de modo que o nome de usuário e a senha não sejam expostos em texto não criptografado.

Importante

A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

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

Evite ataques de injeção com construtores de cadeia 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 mal-intencionado ou caracteres 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 os parâmetros adicionais não sejam introduzidos. Para obter mais informações, confira Construtores de cadeias de conexão.

Use Persist Security Info=False.

O valor padrão para Persist Security Info é falso; nós recomendamos usar esta opção em todas as cadeias de conexão. Configurar Persist Security Info como true ou yes permite informações confidenciais de segurança, incluindo a identificação de usuário e a senha, para serem obtidas de uma conexão depois que ela tiver sido aberta. Quando Persist Security Info for definido como false ou no, as informações de segurança são descartadas após 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.

Criptografe arquivos de configuração

Você também pode armazenar cadeias de conexão em arquivos de configuração, o que elimina a necessidade de inseri-las no código do 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 são geralmente armazenadas dentro do elemento <connectionStrings> no app.config para um aplicativo do Windows, ou o arquivo web.config para um aplicativo do ASP.NET. Para obter mais informações sobre noções básicas de armazenamento, recuperação e criptografia de cadeias de conexão nos arquivos de configuração, veja Cadeias de conexão e arquivos de configuração.

Confira também