Bezpieczne zdalne połączenie z bazą

0

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:

  1. Delphi / Lazarus + ZEOS

Bazy:

  1. 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:

  1. Użytkownik loguje się wpisując login i hasło
  2. Program loguje sie do bazy na konto z ograniczonymi uprawnieniami (login i hasło jest niezależne od tego jakie wpisał użytkownik)
  3. 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

0
Marek101984 napisał(a)

... najlepszym wyjściem byłby jakiś frontend dla bazy po stronie serwera...

Juz sobie odpowiedziales ...

Co do SSL czy jest w standardzie i czy trzeba placic ? Niestety to zalezy od kaprysu admina/sprzedawcy wiec nie mozna zakladac, ze na 100% bedzie.

0
reich napisał(a)
Marek101984 napisał(a)

... najlepszym wyjściem byłby jakiś frontend dla bazy po stronie serwera...

Juz sobie odpowiedziales ...

Właśnie nie za bardzo mam czas na to :P . Chyba jednak zrobię coś w rodzaju keygena który po podaniu loginu i hasła wygeneruje zaszyfrowany silnym algorytmem plik. Ów pliczek będzie musiał być tam gdzie exe. Przed połączeniem z bazą będę go rozszyfrowywał i odczytywał login i hasło

0

Można to zrobić jako aplikację internetową klient-serwer łączącą się przez SSL. Do Delphi są biblioteki intraweb korzystające z ssl.

Hi, anyone knows how to use an SSL certificate with IntraWeb?

I'm running an SSL site (openSSL 0.9.8k) with standalone IntraWeb (10.0.1x)
running as a service. It is running fine now for at least two months. Take a
look here: http://www.atozed.com/intraweb/docs/Deploy/SSL/index.aspx.

And like Joel mentioned: if you are going to use the standalone mode
SSLBuddy could be very helpful (first for creating the CSR file and later
for converting the certificates to PEM format. A link I recently used for
downloading SSLBuddy: http://www.celcat.com/support/faqs/SSLBuddySetup.exe.

If you're using the latest IntraWeb version you could just download the
default OpenSSL dll's. Please mind that the default dll's at the
openssl-site are using the Microsoft C runtime dll's too. You'd better take
a look here for the MinGW compiled dll's:
http://blog.digivendo.com/2009/03/openssl-v098k-for-indy/).

For testing the free SSL certificates of Comodo are really nice (valid for
90 days; long enough for most tests). See:
http://www.instantssl.com/ssl-certificate-products/free-ssl-certificate.html.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.