none
Proteger aplicação RRS feed

  • 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.
    sábado, 29 de janeiro de 2011 22:10

Respostas

  • terça-feira, 1 de fevereiro de 2011 17:08
    Moderador
  • Oque voce poderia fazer é o seguinte

     

    Escreva no bloco de notas assim

     

    HOST
    USERNAME

    PASSWORD

     

    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 =)
    terça-feira, 1 de fevereiro de 2011 22:01
  • 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.
    terça-feira, 1 de fevereiro de 2011 23:23

Todas as Respostas

  • terça-feira, 1 de fevereiro de 2011 17:08
    Moderador
  • Oque voce poderia fazer é o seguinte

     

    Escreva no bloco de notas assim

     

    HOST
    USERNAME

    PASSWORD

     

    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 =)
    terça-feira, 1 de fevereiro de 2011 22:01
  • 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.
    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 =)
    quinta-feira, 3 de fevereiro de 2011 02:49