Witam,
Znalazłem podobne tematy na forum ale nie znalazłem odpowiedzi na wszystkie moje pytania. Piszę prace dyplomową. Tematyka programu generalnie nie jest tu istotna, program będzie musiał łączyć się z bazą danych z każdego miejsca na świecie. Nie wiem na jaką bazę się zdecydować oraz jak rozwiązać pewną kwestię bezpieczeństwa
Narzędzia:
- Delphi / Lazarus + ZEOS
Bazy:
- MySQL lub PostgreSQL
Zależy mi na tym aby wszystko co leci do i z serwera było szyfrowane, od loginu i hasła a na zapytaniach SQL kończąc. Ważne aby nie wymagało to żadnego tunelowania. Czytałem że postgreSQL ma natywny SSL. Czy to oznacza że jest niezależne od hostingu? Jak mam serwer na którym jest postgreSQL to oznacza że mogę za darmo włączyć szyfrowanie? (czy nie wymaga to jakieś dodatkowej opłaty u dostawcy serwera)
Inna sprawa to konta. Aby jeszcze bardziej utrudnić ingerencję, chcę założyć tylko 2 konta. Pierwsze to konto administratora, czyli moje ze wszystkimi uprawnieniami. Używane tylko na czas projektowania. Drugie to konto standardowe przez które będą się wszyscy łączyć (z podstawowymi uprawnieniami tj. SELECT, DELETE, UPDATE itp). Po prostu całe zarządzanie kontami ma być z poziomu programu, ale konta nie będą faktycznymi kontami bazy danych tylko wszystko będzie we własnej tabeli. Nie chcę żeby mi jakieś DROP USER na bazie puszczali. Zresztą tak jest wygodniej bo mogę konta rozbudować o dodatkowe pola tj. PESEL itd. Tylko tu się pojawia problem. Jak zrobić żeby program zawsze wiedział jakie hasło jest do bazy ale tak żeby nikt nie mógł jego przechwycić? Bo ma to wyglądać tak podczas logowania przez użytkownika:
- Użytkownik loguje się wpisując login i hasło
- Program loguje sie do bazy na konto z ograniczonymi uprawnieniami (login i hasło jest niezależne od tego jakie wpisał użytkownik)
- Po prawidłowym zalogowaniu program robi zapytanie do tabeli z użytkownikami sprawdzając poprawność podanych danych przez użytkownika.
Tylko co jak użytkownik przechwyci w jakiś sposób login i hasło z punktu 2? Jak na dodatek zna się na SQL to może mi niezłego bigosu narobić. Nie bardzo pasuje mi wkompilowanie loginu i hasła. Trzymanie w osobnym pliku lokalnie na dysku też nie. Myślałem o tym aby pobierać zaszyfrowany pliczek z jakiegoś serwera. Rozszyfrowywać i logować się do bazy ale może za bardzo sobie wszystko komplikuje. Kurcze najlepszym wyjściem byłby jakiś frontend dla bazy po stronie serwera...
Pozdrawiam