• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

TvM

Encriptar uma connection string

8 mensagens neste tópico

Fiz um programa relativamente simples que acede a uma base de dados mysql e executa algumas queries.

Acontece que depois de compilado, com um simples editor hexadecimal é possível ver em texto essa "connection string" com o username e password.

Qual é será a melhor solução para encriptar ou o programa já compilado ou então pelo menos partes com alguma informação mais sensível??

Agradeço desde já qualquer resposta :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu geralmente quando tenho esse tipo de informações (connection strings) é usual por-se no ficheiro app.config, que é basicamente um ficheiro xml com toda as informações de configuração da aplicação.

Nos casos que é necessário proteger a informação, tem-se a possibilidade de a cifrar. Para isso evoca-se o método ProtectSection na secção correspondente.

Podes ler mais sobre isso aqui.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu também guardo essa info na "app".exe.config apenas o anexei ao executável em vez de criar o ficheiro separadamente.

ISso nao impede de quem fizer "decompiling" possa ver essa informaçao certo?

E um bom programa para encryptar e ofuscar um programa ja compilado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ISso nao impede de quem fizer "decompiling" possa ver essa informaçao certo?

E um bom programa para encryptar e ofuscar um programa ja compilado?

Impede porque essa informação não está sequer compilada. Está cifrada. A não ser que consigam decifrar a connectionString (duvido) não há maneira de obterem a connectionString.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok vou entar tentar ler e testar mais alguma coisa do link que me deste.

Obrigado Betovsky.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui fica um exerto do que tenho em várias bibliotecas uteis.

Numa dada classe XPTO tenho este método.

public static void ProtectSection(string appPath, string sectionName, string provider) {
    Configuration config = ConfigurationManager.OpenExeConfiguration(appPath);
    ConfigurationSection section = config.GetSection(sectionName);
    if (section != null && !section.SectionInformation.IsProtected) {
        section.SectionInformation.ProtectSection(provider);
        config.Save();
    }
}

Depois no arranque do programa faço apenas

ClassXPTO.ProtectSection(Application.ExecutablePath, "connectionStrings", "RsaProtectedConfigurationProvider");

e ele cifra a secção connectionStrings que é onde defino todas as ligações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

;)

Ja consegui codificar o file seguindo  o teu exemplo.

Mas ainda tenho um pequeno problema, ainda me aparece a string no Settings.settings (  [global::System.Configuration.DefaultSettingValueAttribute("Driver={MySQL ODBC 3.51 Driver};SERVER=xpt.net;PORT=3306;DATABASE=blabla_database;USER=root;PASSWORD=xxx;OPTION=3")]

Como posso pro a ir buscar a string directamente ao file app.config?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ConfigurationManager.ConnectionStrings["nomeAtribuido"].ConnectionString;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora