Usuário com melhor resposta
Proteger aplicação

Pergunta
-
Olá,
No minha aplicação eu conecto ao MYSQL, tem uma função que define o banco, usuario senha.
conn.ConnectionString = "server=localhost;user id=usuario;password=minhasenha;database=bancodedados"
esta é uma linha da função, se eu distribuir minha aplicação assim qualquer pessoa pode descubrir esses dados descompilando meu programa, já vi softwares que embaralham o codigo para esses programas não conseguir descompilar, mesmo assim acho muito inseguro, tem outro jeito de fazer esta conexão com o banco de dados que seja mais segura??
Se a resposta foi útil a você, classifique ela. Ajuda a manter o Fórum Organizado.
Respostas
-
Olá Luiz!
Você tem razão, para isso existe a criptografia.
http://msdn.microsoft.com/pt-br/library/fkytk30f(v=VS.80).aspx
http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/8c3ffdc7-3e29-4fc6-b84d-60e6203a0dff
http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/6f6112e5-2572-416a-8f48-cf9b5e48a8b2
http://www.macoratti.net/07/06/vbn5_psc.htm
Asp.net :
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/f23a2b36-6a00-4a1a-88cb-51f998c9ef18
Att;
Eder Costa - LATAM Forum Support Engineer
Microsoft Corporation- Sugerido como Resposta Eder CostaModerator terça-feira, 1 de fevereiro de 2011 17:08
- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 22:33
-
Oque voce poderia fazer é o seguinte
Escreva no bloco de notas assim
HOST
USERNAMEPASSWORD
mas invez de host,username e password coloque os reais do banco de dados claro...
agora use esta função
Public Shared Function TripleDES(ByVal Text As String, ByVal Password As String, Optional ByVal Reverse As Boolean = False) As String Dim Crypt As String = Nothing Dim DES As New System.Security.Cryptography.TripleDESCryptoServiceProvider Dim Hash As New System.Security.Cryptography.MD5CryptoServiceProvider DES.Key = Hash.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(Password)) DES.Mode = Security.Cryptography.CipherMode.ECB Select Case Reverse Case True Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateDecryptor On Error Resume Next Dim Buffer As Byte() = Convert.FromBase64String(Text) Crypt = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) Case False Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateEncryptor Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(Text) Crypt = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) End Select Return Crypt End Function
agora faça o seguinte
Crie um aplicativo no vb só pra ti encryptar os dados, e adicione a ele o codeigo assim de encryptação via TripleDES
ai faça o seguinte
Dim myhost as string myhost = "seu verdadeiro host" Dim myusername as string myusername = "seu username" Dim mypass as string mypass = "seu verdadeiropass" Dim encpass as tring = ")(*AS¨D)(*HSDjicbgçy1361230hCÇP(YOANydpc*(SMDCO&" my.computer.filesystem.writealltext("C:\host.txt",TripleDES(myhost, encpass),true) my.computer.filesystem.writealltext("C:\user.txt",TripleDES(myusername,encpass),true) my.computer.filesystem.writealltext("C:\pass.txt",TripleDES(mypass, encpass),true)
Entao os seus dados encryptados estarão nos arquivos de textos, agora pra vc criar a conexao com os dados encryptados é simples
Dim host,username,pass,encpass as string 'host = "os dados que estao no arquivo de texto host.txt" 'pass = "os dados que estao no arquivo de texto host.txt" 'username = "os dados que estao no arquivo de texto host.txt" host = TripleDes("os dados que estao no arquivo de texto host.txt",encpass,true) username = TripleDes("os dados que estao no arquivo de texto username.txt",encpass,true) pass = TripleDes("os dados que estao no arquivo de texto pass.txt",encpass,true) encpass = ' a mesma senha que vc usou para encryptar aquela hora ' agora desencryptados.... Dim hos1t,username1,pass1,encpass as string encpass = ' a mesma senha que vc usou para encryptar aquela hora conn.ConnectionString = "server=" & host & ";user id=" & username & ";password=" & pass & ";database=bancodedados"
vo da uma resumida pegue os dados de conexao da sua sql e encrypta eles em TripleDes com uma senha muito dificil com tudo menos aspas, pegue os dados encryptados e use ele pra criar a conexao na sql só que nao use eles encryptados na linha do conn.ConnectionString =
desencrypte eles antes de por ali, isso vai atrapalhar muito pra alguem tentar descobrir os dados, e fora que voce tbm pode encryptar a senha da encryptação e desencrypta-la para poder desencryptar os dados encryptados na hora de criar a conexao
Thiii =)- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 22:33
-
Olá ManomYst vi seu codigo é bom, dificulta encontrar a senha, mas é meio estranho porque se o usuario pode editar minha aplicação com um descompilador, assim é possível decriptá-la, já que o algoritmo de decriptação está no proprio executável, outro ponto fraco é o usuário não precisa pegar a senha só modificar o db com as strings de consultas.
Obrigado pelas respostas
Se a resposta foi útil a você, classifique ela. Ajuda a manter o Fórum Organizado.- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 23:23
Todas as Respostas
-
Olá Luiz!
Você tem razão, para isso existe a criptografia.
http://msdn.microsoft.com/pt-br/library/fkytk30f(v=VS.80).aspx
http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/8c3ffdc7-3e29-4fc6-b84d-60e6203a0dff
http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/6f6112e5-2572-416a-8f48-cf9b5e48a8b2
http://www.macoratti.net/07/06/vbn5_psc.htm
Asp.net :
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/f23a2b36-6a00-4a1a-88cb-51f998c9ef18
Att;
Eder Costa - LATAM Forum Support Engineer
Microsoft Corporation- Sugerido como Resposta Eder CostaModerator terça-feira, 1 de fevereiro de 2011 17:08
- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 22:33
-
Oque voce poderia fazer é o seguinte
Escreva no bloco de notas assim
HOST
USERNAMEPASSWORD
mas invez de host,username e password coloque os reais do banco de dados claro...
agora use esta função
Public Shared Function TripleDES(ByVal Text As String, ByVal Password As String, Optional ByVal Reverse As Boolean = False) As String Dim Crypt As String = Nothing Dim DES As New System.Security.Cryptography.TripleDESCryptoServiceProvider Dim Hash As New System.Security.Cryptography.MD5CryptoServiceProvider DES.Key = Hash.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(Password)) DES.Mode = Security.Cryptography.CipherMode.ECB Select Case Reverse Case True Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateDecryptor On Error Resume Next Dim Buffer As Byte() = Convert.FromBase64String(Text) Crypt = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) Case False Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateEncryptor Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(Text) Crypt = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) End Select Return Crypt End Function
agora faça o seguinte
Crie um aplicativo no vb só pra ti encryptar os dados, e adicione a ele o codeigo assim de encryptação via TripleDES
ai faça o seguinte
Dim myhost as string myhost = "seu verdadeiro host" Dim myusername as string myusername = "seu username" Dim mypass as string mypass = "seu verdadeiropass" Dim encpass as tring = ")(*AS¨D)(*HSDjicbgçy1361230hCÇP(YOANydpc*(SMDCO&" my.computer.filesystem.writealltext("C:\host.txt",TripleDES(myhost, encpass),true) my.computer.filesystem.writealltext("C:\user.txt",TripleDES(myusername,encpass),true) my.computer.filesystem.writealltext("C:\pass.txt",TripleDES(mypass, encpass),true)
Entao os seus dados encryptados estarão nos arquivos de textos, agora pra vc criar a conexao com os dados encryptados é simples
Dim host,username,pass,encpass as string 'host = "os dados que estao no arquivo de texto host.txt" 'pass = "os dados que estao no arquivo de texto host.txt" 'username = "os dados que estao no arquivo de texto host.txt" host = TripleDes("os dados que estao no arquivo de texto host.txt",encpass,true) username = TripleDes("os dados que estao no arquivo de texto username.txt",encpass,true) pass = TripleDes("os dados que estao no arquivo de texto pass.txt",encpass,true) encpass = ' a mesma senha que vc usou para encryptar aquela hora ' agora desencryptados.... Dim hos1t,username1,pass1,encpass as string encpass = ' a mesma senha que vc usou para encryptar aquela hora conn.ConnectionString = "server=" & host & ";user id=" & username & ";password=" & pass & ";database=bancodedados"
vo da uma resumida pegue os dados de conexao da sua sql e encrypta eles em TripleDes com uma senha muito dificil com tudo menos aspas, pegue os dados encryptados e use ele pra criar a conexao na sql só que nao use eles encryptados na linha do conn.ConnectionString =
desencrypte eles antes de por ali, isso vai atrapalhar muito pra alguem tentar descobrir os dados, e fora que voce tbm pode encryptar a senha da encryptação e desencrypta-la para poder desencryptar os dados encryptados na hora de criar a conexao
Thiii =)- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 22:33
-
Olá ManomYst vi seu codigo é bom, dificulta encontrar a senha, mas é meio estranho porque se o usuario pode editar minha aplicação com um descompilador, assim é possível decriptá-la, já que o algoritmo de decriptação está no proprio executável, outro ponto fraco é o usuário não precisa pegar a senha só modificar o db com as strings de consultas.
Obrigado pelas respostas
Se a resposta foi útil a você, classifique ela. Ajuda a manter o Fórum Organizado.- Marcado como Resposta Luiz Henrique Palacio terça-feira, 1 de fevereiro de 2011 23:23
-
se voce criar uma senha encryptada pra depois desencryptar ela e usar no codigo ai dificulta mais ainda, eu no seu caso usaria umas tres encryptações e o software chamado SmartAssembly ai sim seria inpossivel de desxobrir os dados
Thiii =)