Como: Proteger seqüências de conexão quando usando controles de fontes de dados

Ao trabalhar com controles de fonte de dados, você deve centralizar a localidade de suas sequências de conexão colocando-as no arquivo Web.config do aplicativo.Os benefícios dessa são dois: seus controles de fonte de dados podem referência nome a seqüência de caracteres de conexão do arquivo de configuração em vez de incluir a seqüência de caracteres de conexão sistema autônomo uma propriedade de controle e administração do site é mais fácil porque o gerenciamento de cadeias de caracteres de conexão é centralizado, o que elimina a necessidade de revisitar sistema autônomo páginas individuais se sua conexão com a seqüência das informações muda.

Neste tópico você aprenderá como colocar suas sequências de conexão dentro do arquivo Web.config usando o Visual Studio e um controle de fonte de dados, e como usar o utilitário de linha de comando, Aspnet_regiis.exe, para criptografar as sequências de conexão para uma camada adicional de segurança.

Como adicionar uma sequência de conexão a um Web.Config com um controle de fonte de dados

  1. Abra uma página.aspx no modo de exibição Design no Visual Studio.

  2. Em Caixa de Ferramentas, da pasta Dados, arraste um controle de fonte de dados, tal como o controle SqlDataSource, para a superfície de design.

  3. Clique com o botão direito do mouse no controle, e clique em Show Smart Tag.

  4. No painel de marcas inteligentes, clique em Configure Data Source.

  5. Na Painel Choose a Data Connection, clique em New Connection.

  6. Selecione uma fonte de dados apropriada da lista na caixa de diálogo Choose Data Source , e clique em OK.

  7. Indique o nome do servidor correto, nome de usuário e senha na caixa de diálogo Add Connection , e clique em OK.

    Você é retornado para a caixa de diálogo Configure Data Source com um resumo dos detalhes da sua conexão.

  8. Clique em Next, e clique em Yes para salvar a sequência de conexão no arquivo Web.config.

    Agora a sequência de conexão é armazenada no arquivo Web.config, e você pode configurar os detalhes da consulta para o seu controle.

Para criptografar informações de sequência de conexão armazenadas no arquivo Web.config

  1. Na linha de comando do Windows, execute a ferramenta de registro ASP.NET IIS (Aspnet_regiis.exe) com as seguintes opções

    • A opção -pe, passando a string "connectionStrings" para criptografar o elemento connectionStrings.

    • A opção -app, passando o nome do seu aplicativo.

    A ferramenta Aspnet_regiis.exe está localizada na pasta %systemroot%\Microsoft.NET\Framework\versionNumber.

    O exemplo de código a seguir mostra como criptografar a seção connectionStrings do arquivo Web.config para um aplicativo chamado SampleApplication.

    aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"
    

    Quando o comando tiver terminado, você pode exibir o conteúdo do arquivo Web.config.A seção de configuração connectionStrings conterá informações criptografadas ao invés de uma string de conexão texto, conforme a seguir o exemplo de código.

    <configuration>
       <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
          <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
             xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                      <KeyName>RSA Key
                      </KeyName>
                   </KeyInfo>
                   <CipherData>
                      <CipherValue>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                      </CipherValue>
                   </CipherData>
                </EncryptedKey>
             </KeyInfo>
             <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
             </CipherData>
          </EncryptedData>
       </connectionStrings>
    </configuration>
    

    Deixe o prompt de comando aberto para etapas posteriores.

  2. Determine a conta de usuário ou identidade na qual o ASP.NET executa para recuperar o nome atual WindowsIdentity.

    O exemplo de código a seguir mostra uma maneira de determinar o nome WindowsIdentity.

    <%@ Page Language="VB" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
    %>
    
    <%@ Page Language="C#" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    
    Observação:

    Por padrão, no Windows Server   2003 com representação para um aplicativo ASP.NET é desativado no arquivo Web.config, a identidade na qual o aplicativo é executado é a conta NETWORK SERVICE.Em outras versões do Windows, ASP.NET executa sob a conta local ASPNET.

    A conta de usuário ou identidade com a qual o ASP.NET é executado deve ter acesso de leitura para a chave de criptografia usada para criptografar e descriptografar seções do arquivo Web.config.Este procedimento supõe que o site esteja configurado com o padrão RsaProtectedConfigurationProvider especificado no arquivo Machine.config chamado "RsaProtectedConfigurationProvider".O RSA contêiner de chave usado pelo padrão RsaProtectedConfigurationProvider é denominado "NetFrameworkConfigurationKey".

  3. No prompt de comando, execute a ferramenta Aspnet_regiis.exe com as seguintes opções:

    • A opção -pa, passando o nome do contêiner de chave RSA para o padrão RsaProtectedConfigurationProvider.

    • A identidade de seu aplicativo ASP.NET, conforme determinado na etapa anterior.

    O exemplo de código a seguir mostra como conceder o acesso à conta NETWORK SERVICE para a máquina contêiner de chave RSA " NetFrameworkConfigurationKey ".

    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    
  4. Para descriptografar o conteúdo criptografado do arquivo Web.config, execute a ferramenta aspnet_regiis.exe com a opção -pd.A sintaxe é a mesma da criptografia do conteúdo do arquivo Web.config com a opção -pe exceto que você não especifique um provedor de configuração protegida.O provedor apropriado é identificado no atributo configProtectionProvider para a seção protegida.

    O exemplo de código a seguir mostra como descriptografar o elemento connectionStrings do aplicativo ASP.NET SampleApplication.

    aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"
    

Consulte também

Outros recursos

Criptografando informações de configuração usando configuração protegida