CRIPTOGRAFAR CAMINHO NO APP.CONFIG

MARCOSARANTESJ 12/03/2010 09:15:14
#336723
ANDEI PESQUISANDO SOBRE ISSO E PERCEBI QUE TEM COMO CRIPTOGRAFAR A STRING DE CONEXÃO DO BANCO DE DADOS QUE FICA NO APP.CONFIG, QUE QUANDO COMPILADO, FICA COMO XML CONFIGURATION FILE (ARQUIVO DE CONFIGURAÇÃO XML). INFELIZMENTE, QUANDO CRIAMOS UM DATASET TIPADO, ELE TEM QUE CONTER A CONEXÃO, QUE FICA ARMAZENADA NO APP.CONFIG OU XML CONFIGURATION FILE. COMO PODERIA SER FEITO PARA PROTEGER A STRING DE CONEXÃO, SABENDO QUE SE CRIAMOS UM DATASET PELO ASSISTENTE DO VB.NET, ELE CRIA A STRING DE CONEXÃO? JÁ TENTEI NÃO ARMAZENAR A STRING DE CONEXÃO, MAS ELE FICA PEDINDO SENHA TODA HORA E NA HORA DE COMPILAR NÃO ACESSA O BANCO DE DADOS. SÓ QUERIA PROTEGER PARA PROGRAMAS QUE TENHO QUE TER ALTA PERFORMANCE, POIS COM DATASET TENHO ALTA PERFORMANCE E MAIS SEGURANÇA NAS ROTINAS CRUD.
SE FOSSE PROGRAMA PEQUENO OU FOSSE APENAS PARA 1 USUÁRIO, EU NEM LIGARIA PARA ISSO, MAS QUANDO é PARA MUITOS, EU TENHO QUE TER A SEGURANÇA DO BANCO DE DADOS.
MARCOSARANTESJ 12/03/2010 11:03:14
#336749
Achei isso aqui
http://www.macoratti.net/07/06/vbn5_psc.htm
mas, se usarmos dataset pelo assistente do vb.net, criando um bindingsource ou só por dataset também, temos o problema de que a conexão pode estar cifrada. o vb não iria reconhecer isso. Vou fazer uns teste aqui e vejo se dá certo.
MARCOSARANTESJ 12/03/2010 12:01:24
#336758
CONSEGUI E VOU POSTAR AQUI PARA A GALERA. PARA QUEM NÃO CONSEGUIA PROTEGER A SENHA DO BANCO DE DADOS, VOU PASSAR PRIMEIRO DE UMA MANEIRA MAIS FÁCIL, SEM COLOCAR A SENHA NO APP.CONFIG OU XML CONFIGURATION FILE (DEPOIS DE COMPILADO), SEM SER CRIPTOGRAFADO, MAS A SENHA FICA ARMAZENADA SOMENTE NO CÓDIGO-FONTE. EU MESMO QUE FIZ, NÃO ENCONTREI UMA MANEIRA MAIS FÁCIL DE FAZER ENTÃO EU MESMO CRIEI UMA.
PARA QUEM GOSTA DE USAR O ASSISTENTE O VB.NET PARA DESENVOLVER SOFTWARES MAIS RÁPIDO, ENTÃO ISSO é O IDEAL. USE O ASSISTENTE DO VB.NET PARA FAZER A CONEXÃO ESCOLHENDO A FONTE DE DADOS, NA HORA DE DIGITAR A SENHA, DIGITE, MAS NÃO MARQUE EM [Ô]SAVE MY PASSWORD[Ô],PARA NÃO ARMAZENAR A CONEXÃO. EM CHOOSE YOUR DATA CONNECTION, ESCOLHA A PRIMEIRA OPÇÃO NO,EXCLUDE SENSITIVE DATA...,PARA NÃO ARMAZENAR A SENHA. DEPOIS DE CONCLUÍDO, COLOQUE NO EVENTO LOAD DO FORM, OU CLIQUE 2 VEZES SOBRE O FORM E COLOQUE O SEGUINTE CÓDIGO:
ESSA CONEXÃO ABAIXO é MYSQL, MAS VOCÊS JÁ DEVEM SABER COMO FICA PARA AS OUTRAS.

Dim conexao As String = [Ô]Server=localhost;User Id=root;Password=SENHA;Database=NOMEDOBANCODEDADOS;Allow Zero Datetime=True[Ô]
[ô]O TABLE ADAPTER ARMAZENA A STRING DE CONEXÃO CRIADA
TesteTableAdapter.Connection.ConnectionString = conexao
Me.TesteTableAdapter.Fill(Me.TestDataSet.teste)


SE O MODERADOR QUISER DEIXAR ESTE TÓPPICO COMO PRINICPAL PARA AJUDAR A TODOS, PODE DEIXAR. AGORA VOU FAZER OS TESTES COM O APP.CONFIG CRIPTOGRAFADO E POSTO AQUI TAMBéM.
MARCOSARANTESJ 12/03/2010 13:32:24
#336784
Imports System.Configuration<br/>
[ô]No Load do form
Dim caminho As String = [Ô]C:\Users\MARK\Documents\Visual Studio 2008\Projects\TesteCriptografiaStringdeConexao\TesteCriptografiaStringdeConexao\bin\Debug\TesteCriptografiaStringdeConexao.exe[Ô]
Dim aplicativo As String = [Ô]TesteCriptografiaStringdeConexao.exe[Ô]

[ô]Cria uma sub com o código
Private Sub verificaConfigEncryption(ByVal exeConfigName As String)
[ô]Toma o nome do arquivo EXE sem a extensão .config[ô]
Try
[ô] Abre o arquivo de configuração e retorna a seção connectionStrings[ô].
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(exeConfigName)

Dim section As ConnectionStringsSection = DirectCast(config.GetSection([Ô]connectionStrings[Ô]), ConnectionStringsSection)

If section.SectionInformation.IsProtected Then
[ô] Remove a cifragem
section.SectionInformation.UnprotectSection()
Else
[ô] Cifra a seção
section.SectionInformation.ProtectSection([Ô]DataProtectionConfigurationProvider[Ô])
End If

[ô] Salva a configuração atual.
config.Save()

Label1.Text = [Ô]Protegido={0}[Ô] & section.SectionInformation.IsProtected

Catch ex As Exception
msgbox(ex.Message)
End Try
End Sub

[ô]Coloque 1 label apenas para mostrar a mensagem protegido =false ou true e crie um botão e clique 2 vezes nele e insira o código
verificaConfigEncryption([Ô]C:\Users\MARK\Documents\Visual Studio 2008\Projects\TesteCriptografiaStringdeConexao\TesteCriptografiaStringdeConexao\bin\Debug\TesteCriptografiaStringdeConexao.exe[Ô])




<br/>

Esse funciona no executável da pasta debug quando vai debugar a aplicação,mas eu acho que pode fazer com a release também.
Tópico encerrado , respostas não são mais permitidas