Jak uzyskać dostęp programu do bazy danych MySQL gdy hasło do bazy danych zmieniło się

0

Witam. Dane autoryzacji do bazy danych MySQL mam zapisane wewnątrz programu. Problem pojawia się, gdy hasło do bazy danych zostanie zmienione, wtedy będę musiał na nowo kompilować program i każdy użytkownik będzie musiał na nowo ściągać program. Jak w bezpieczny sposób przekazywać do programu aktualne dane autoryzacji np. z serwera FTP.

Czy moje rozwiązanie jest prawidłowe?

  1. Osoba zarządzająca jednostką podczas instalacji podaje adres FTP gdzie przechowywane są dane adresowe i dane logowania do bazy danych.
    (teraz jak bezpiecznie zapisać owe dane logowania, aby inni użytkownicy nie znali wartości i żeby tylko program mógł je odczytać)
  2. Program podczas uruchamiania pobiera dane logowania i zapisuje je w
static string Address;
static NetworkCredential Credential;

Proszę was o odpowiedź lub materiały na ten temat

0

Żaden FTP, nic z tych rzeczy.

Rozwiązanie to zaszyfrowana sekcja app.config'a lub web.config'a. Można zaszyfrować którąkolwiek sekcję tych plików. Do szyfrowania używane są bodajże klucze użytkowników Windows więc odpada problem ich generowania.

Proszzzzz:

        public static void EncryptSectionIfPlain(string sectionName, string exePath)
        {
            var config = ConfigurationManager.OpenExeConfiguration(exePath);
            var section = config.GetSection(sectionName);

            if (!section.SectionInformation.IsProtected)
            {
                section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                section.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Modified);
            }
        }

Tylko userkom trzeba dostarczyć plik w postaci jawnej i np. zaszyfrować przy pierwszym uruchomieniu programu.

PS: jeśli hardkodujesz takie rzeczy w aplikacj to bardzo źle, ponieważ wystarczy głupi ILSpy by odczytać dane logowania.
PS2: FTP jest nieszyfrowany więc Twoje dane logowanie są z automatu skompromitowane.

2
grzesiek51114 napisał(a):

PS2: FTP jest nieszyfrowany więc Twoje dane logowanie są z automatu skompromitowane.
No chyba, że zamiast hasła będzie zaszyfrowany ciąg, a jakiś pseudo algorytm deszyfrujący będzie zakodowany w aplikacji. W ten sposób Użytkownik nie ma dostępu do jawnego hasła.

1

Nie lepiej wystawić serwis WCF, który będzie szyfrowanym kanałem dostarczał dane do logowania przy każdej próbie łączenia z bazą?
Nic nigdzie nie zapisywać.
A co do FTP, większość aplikacji klienckich, a także serwerów umożliwia łączenie się protokołem SFTP lub FTPS,
które są szyfrowane. Ale i tak uważam, że lepiej WCF. ;)

0 użytkowników online, w tym zalogowanych: 0, gości: 0