LAYERDEV

 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.

Criptografia de String de Conexão no Web.Config



Data Publicação: 8/3/2006 12:11:46
Total de visualizações: 12576

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


Visual Studio.NET 2005

 

 

Olá pessoal, meu nome é Mauricio Junior. Vou mostrar como trabalhar com criptografia da string de conexão dentro do web.config. Dessa forma, qualquer pessoa, lamer, larva, hacker, cracker, phreaker ou guruque invadir o servidor e tentar abrir o banco de dados verificando em seu arquivo de configuração web.config; não conseguirá ver qual o banco de dados, senha e usuário. Com isso a segurança do seu sistema fica bem mais confiável e prático.

 

Se ainda não sabe qual a diferença entre eles. Disponibilizei nas referências abaixo.

 

 

Lamer: é o principiante que se acha o máximo. Acabou de ganhar um micro e já quer invadir os computadores do Pentágono. Normalmente são odiados pelos Hacker verdadeiros.

 

Referência: 1.1

 

 

Larva: Está se tornando um verdadeiro Hacker. Já consegue desenvolver suas próprias técnicas para invadir sistemas.

 

Referência: 1.2

 

 

Hacker: Tem conhecimentos reais de programação e de sistemas operacionais, principalmente o Unix e o Linux, que são os mais usados pelos servidores da Internet. Conhece quase todas as falhas de segurança dos sistemas e procura achar novas. Desenvolve suas próprias técnicas e programas de invação, e despreza as receitas de bolo. Tenta invadir apenas para o conhecimento, geralmente não faz nada com os dados que conseguiu pegar.

 

Referência: 1.3

 

 

Cracker: É o Hacker do mal, que invade sistemas, rouba dados e arquivos, números de cartão de crédito, faz espionagem industrial e destrói dados.

 

Referência: 1.4

 

 

Phreaker: Hacker com bons conhecimentos de telefonia que consegue inclusive fazer chamados internacionais sem pagar, o que lhe permite desenvolver seus ataques a partir de um servidor de outro país.

 

Referência: 1.5

 

 

Guru: O mestre dos Hackers.

 

Referência: 1.6

 

Depois de toda essa definição e conhecendo o inimigo, irei mostrar como evitar pelo menos uma invasão usando o arquivo de configuração de uma aplicação totalmente aberto, que é o Web.Config e App.Config.

 

Bom, antes de tudo segue mais uma frase criptografada para conhecimento e possibilidade de ganhar prêmios se for descriptografada.

 

Ftuvep nvjup f nf nboef f-nbjm dpn p ujuvmp: eftdsiruphsbgfj.

 

Voltando ao artigo, criei uma class libary para desenvolver um framework, porém não é necessário criar, só coloque os métodos em uma classe segura e legal. Utilizo com class libary e adiciono como referência do projeto, dessa forma fica também seguro o código porque só vai a DLL em si.

 

Criei uma classe chamada Criptografia.cs. (Referência 1.7)

 

Referência: 1.7

 

O primeiro método que irei criar é o que pega os valores do arquivo de configuração e descriptografa. (Referência 1.8)

 

 

/// <summary>

        /// Método que descriptografa dados

        /// Pega do App.config ou Web.Config automaticamente

        /// </summary>

        /// <returns></returns>

        public string DecryptConnectionString()

        {

            Byte[] b = Convert.FromBase64String(ConfigurationSettings.AppSettings["ConnectionString"]);

            string decryptedConnectionString = System.Text.ASCIIEncoding.ASCII.GetString(b);

            return decryptedConnectionString;

        }

 

Referência: 1.8

 

Explicação:

Não tem muito que explicar no método, mesmo assim tentarei clarear se tiver alguma coisa obscura. A primeira linha, pego o que está no arquivo de configuração, converto para FromBase64String deixando a mesma em uma variável do tipo byte. A segunda linha de código, pego a string do codigo ASCII passando o valor armazenado na variável anterior e depois só retorno o valor descriptografado.

Uma dica é: no meu arquivo de configuração está criptografada, no ato de usar ou conectar no banco de dados, use o método para descriptografar, ou seja, antes do Open().

 

 

Criptografando ConnectionString

 

Fiz um outro método que é responsável para criptografar a string de conexão. (Referência 1.9)

 

 

/// <summary>

        /// Método para encriptografar string de conexao.

        /// Pega a conexao passada

        /// </summary>

        /// <param name="connectionString"></param>

        /// <returns></returns>

        public string EncryptConnectionString(string connectionString)

        {

            Byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(connectionString);

            string encryptedConnectionString = Convert.ToBase64String(b);

            return encryptedConnectionString;

        }

 

Referência: 1.9

 

Explicação:

A assinatura do método é um pouco diferente do anterior, agora existe um parâmetro de entrada do tipo string. Depois, converto a string passada para o codigo ASCII, armazenando na variável (b) do tipo byte. Converti para ToBase64 a variável byte, armazenei em uma string e retornei o valor para quem chamou.

 

 

Arquivo de Configuração

 

Criei uma aplicação WindowForm, toda aplicação desse tipo é automaticamente usado um arquivo de configuração chamado App.Config. (Referência 2.0)

 

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

 

  <appSettings>

    <add key="ConnectionString"

        value="UGFzc3dvcmQ9MTIzOyBQZXJzaXN0IFNlY3VyaXR5IEluZm89VHJ1ZTsgVXNlciBJZD1zYTsgSW5pdGlhbCBDYXRhbG9nPUJER0VDT1JFOyBEYXRhIFNvdXJjZT1zdGYtbHVpcw=="/>

  </appSettings>

 

</configuration>

 

Referência: 2.0

 

Layout da tela (Referência 2.1)

 

 

Referência: 2.1

 

Dados da tela.

 

Label

Id = Label1

-----------------------------------------------------------------------------------------

TextBox

Id = textBox2

MultLine = True

------------------------------------------------------------------------------------------

Label

Id = Label2

------------------------------------------------------------------------------------------

TextBox

Id = textBox1

MultLine = True

-----------------------------------------------------------------------------------------

 

 

Button

Id = button1

Text = button1

 

Referência: 2.2

 

Cliquei duas vezes no botão, logo em seguida inclui o seguinte código. (Referência 2.3)

 

 

private void button1_Click(object sender, EventArgs e)

        {

            string con = (string) ConfigurationSettings.AppSettings["ConnectionString"];

           

            Cript.Dados.Criptografia cript = new Cript.Dados.Criptografia();

           

            label1.Text = "Descriptografado: " + cript.DecryptConnectionString();

            label2.Text = "Criptografada: " + con;

            textBox1.Text = label1.Text;

            textBox2.Text = label2.Text;

        }

 

Referência: 2.3

 

Explicação:

Primeiramente peguei a string de conexão usando o configurationsettings. Deve ser importado antes a linha: using System.Configuration;

Instanciei o a classe de criptografia criada anteriormente, armazenando a string descriptografada no label1 e a armazenada no label2.

 

 

 

Resultado final da aplicação criada. (Referência 2.4)

 

Referência: 2.4

 

 

Bom, esse é o resultado final de todo trabalho.

Fico por aqui, qualquer dúvida pode entrar em contato.

 

Mauricio Junior

www.ascompras.com

www.aspneti.com

mauricio@ascompras.com

 



Total de visualizações: 12576
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

Instalando o .NET Compact Framework 2.0 SP2 em seu Dispositivo Móvel
Concurso Office
Usando Tooltip
Alongar é preciso
Teclas de atalho - Visual Studio .NET 2005
SELECT INSERT
Um desejo de felicidade
Problemas no sistema de busca
Definindo o botão padrão.
User Control Windows executando no Internet Explorer (parte 1 de 2)
Vídeo - Mostrando um sistema com pocket pc
Sistema de Catalogar Livros
Problemas na acentuação
Microsoft® Expression® Web
Desenvolvimento de Aplicativos para TV Digital - Parte 4
Vídeo do Visual SourceSafe - Parte I
Teclas de Atalho do Visual Studio .NET 2010
Não publicação
Vídeo: Windows Phone com Windows Mobile 7
Trabalhando com LinkButton dentro do Gridview
Label Server Control AccessKey
Append Data Bound Items
e-Book gratuito Microsoft Office 2010
Pegando dados do computador facilmente via software
Detectando erro a todo custo
Visual Source Safe - Série 1
Mudar de MasterPage em Tempo de Execução
Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Novidades na maneira de colher informações do medidor de energia da sua casa
Gravando Erros com Exception - Parte I
Internet Explorer 9
O futuro da tecnologia com a Microsoft
Atendimento online
Vídeo Microsoft Visual SourceSafe Parte III 3/3
Visual SourceSafe - Série 4
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informaes Online
Usurios Online: 84
Artigos:  749
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