NETITC

 Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Alterando e criptografando a String de Conexão em RunTime (.NET 2.0)



Data Publicação: 10/10/2006 0:19:34
Total de visualizações: 6603

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


Olá amigos,

 

O desenvolvimento ASP.NET é inacreditavelmente fácil e rápido, todo o programador .NET sabe disso, mas há itens que devem ser levados em conta na hora de desenvolver, uma delas é a segurança. A segurança de uma aplicação não é uma etapa do desenvolvimento, ela faz parte de todo o processo. SQL Injection, Exceptions não tratadas e validação dos dados de entrada são itens importantes que devem ser levados em conta.

 

No meu trabalho, por exemplo, desenvolvemos todas as aplicação em camadas, sempre levando em conta a segurança e a performance. No caso do banco de dados, quando a aplicação está em fase de testes, acessa um banco só de teste, quando está em produção acessa outro. Mas essa mudança precisa ser flexível, para que não seja preciso recompilar o código ou fazer muita alteração. A solução: configurar via web.config. Outra medida que sigo, criptografar a string de conexão. Mas como podemos fazer isso, você pergunta? É o que vamos ver a seguir.

 

O código abaixo foi feito em VB.NET 2.0

 

Primeiro vamos ver a connection string

 

<connectionStrings>

    <add name="TESTE" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=True; User Instance=True;AttachDBFilename=|DataDirectory|\AspNetDB.mdf;"

      providerName="System.Data.SqlClient"/>

    <add name="PRODUCAO" connectionString="Data Source=SQL.NETITC.COM.BR; User ID=root; Password=teste123;"

      providerName="System.Data.SqlClient"/>

</connectionStrings>

 

Note que tenho duas strings de conexao, uma de teste, outra de produção. Vamos adicionar também uma appSetting, pra armazenar qual das strings iremos usar.

 

  <appSettings>

    <add key="UseBD" value="TESTE" />

  </appSettings>

 

Para usar usamos o seguinte código:

 

Imports System.Configuration

 

Public Class clConnection

 

    Public Function GetConnectionString() As String

        Dim UseDB As String = ConfigurationManager.AppSettings("UseDB")

        Return ConfigurationManager.ConnectionStrings(UseDB).ConnectionString

    End Function

 

End Class

 

 

Pronto, já vimos como usar uma string de conexão dinamicamente, agora vamos ver como configurar. Vamos criar uma pagina de configuração, pode ser da forma que você quiser, o que vai nos importar é o código:

 

Usar Banco de Dados:

 

    Protected Sub btnSalvar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSalvar.Click

        Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~")

        Dim section As AppSettingsSection = config.AppSettings

 

        section.Settings("UseDB").Value = dplBanco.SelectedValue

        config.Save(ConfigurationSaveMode.Modified)

    End Sub

 

O código acima é simples, abrimos o arquivo de configuração, obtemos a AppSetting e modificamos o valor. dplBanco é o dropdownlist que possui dois valores, TESTE e PRODUCAO.

 

Agora, para criptografar a string de conexão, criamos mais um botão no form e atribuímos o seguinte código:

 

Usar Banco de Dados:

 

Protected Sub btnCripto_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCripto.Click

    Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~")

    Dim section As ConnectionStringsSection = config.ConnectionStrings

 

    If section.SectionInformation.IsProtected Then

        section.SectionInformation.UnprotectSection()

    Else

       section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")

    End If

    config.Save(ConfigurationSaveMode.Modified)

End Sub

 

 

O resultado no Web.Config é o seguinte:

 

 <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">

  <EncryptedData>

   <CipherData>

    <CipherValue>AQAAANCMnd8BF...</CipherValue>

   </CipherData>

  </EncryptedData>

 </connectionStrings>

 

 

 

Lembre-se, sua função GetConnectionString não muda, ou seja, a função vai retornar a String de Conexão independente se estiver criptografada ou não.

 

Espero que tenha sido proveitoso para você. Estou sempre a disposição, mandem email para aguiar.fabio@gmail.com que ficarei feliz em responder.

 

Abraços

 



Total de visualizações: 6603
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Alterando e criptografando a String de Conexão em RunTime (.NET 2.0)
Como criar facilmente arquivos XML via código
Como criar um CompositeControl, TextBox com Validador
O que é Design Patterns?
Sobre o Autor
  [sumir] [aparecer]
 
Fabio Aguiar

Informaes Online
Usurios Online: 290
Artigos:  750
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC