Zamierzam napisać program odczytujący dane dla użytkownika (logowanie w programie) z bazy MySQL. Baza ma dość poufne dane i tu moje pytanie: jeżeli podam dane do połączenia MySQL (host, użytkownik, hasło) to czy będzie to bezpieczne? Czy da się to jakoś scrackować i wyciągnąć dane do mojej bazy? Proszę o rozjaśnienie tematu.
jak to zapiszesz jako zwykły tekst w aplikacji to będzie to kilka kliknięć myszką, jak to w jakiś sposób zaszyfrujesz może być trochę trudniej ale jeśli połączenie do bazy jest nieszyfrowane to też nie będzie to problem (nawet nie trzeba się bawić w grzebanie w exe) natomiast jak połączenie jest szyfrowane i dane są zaszyfrowane to trzeba będzie wyciągnąć najpierw algorytm szyfrowania z exe i tyle
Czy jest jakis sprawdzony sposob zeby dane byly nie do odszyfrowania? Prosze o wiecej informacji i rad. Potrzebuje napisac program obslugujacy mysql jednak jesli jakas osoba trzecia uzyska dostep do bazy to narazi mnie na spore straty pieniezne.
nie ma takiej opcji - jak coś jest zapisane i musi to być odczytane to odczytać to może każdy dostatecznie zmotywowany
To po co sa komponenty obslugujace mysql? Przeciez nikt by z nich nie korzystal bo by kazdy zmotywowany wlamywal sie do bazy i np. kasowal dane.
szkoda słów...
Dzieki za odpowiedz. Jestem zielony w tych sprawach i chcialbym sie dowiedziec....
Najlepiej jest korzystać z jakiegoś interfejsu w stylu Twój program -> jakiś język po stronie serwera (Java/PHP/cokolwiek) -> baza MySQL
Czyli, że ten Twój program wysyła jakieś dane do skryptu po stronie serwera (te dane to są np.identyfikator użytkownika, hash jego hasła i coś tam, co ma być zapisane do bazy danych - nie przesyła jednak danych logowania do niej); skrypt waliduje dane i odpowiednio modyfikuje bazę danych.
Dzięki temu nikt nie wykradnie Ci hasła do niej.
Dodam jeszcze, że tutaj jakimś wyjściem z sytuacji są serwery aplikacji (choćby WCF na przykład). Jednak jest to tylko połowiczne rozwiązanie bo o ile nie ma się dostępu wprost do danych to i tak można dużo napsuć jak się ktoś uprze a programista może mu to jedynie utrudnić przez różne obostrzenia - np. możliwość usunięcia tylko jednego kontrahenta na 10 minut albo logowania kto, co i skąd robił, albo zablokowania połączenia jeśli ktoś chce hurtowo (np. 20 rekordów pod rząd) coś zmienić/usunąć/dodać. Generalnie co kto wymyśli i na co pozwala sama logika aplikacji
BTW możesz zabezpieczyć hasło np. w ten sposób (kod wygenerowany przez http://www.stringencrypt.com/ link z http://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/212084-szyfrowanie_tekstow_i_szyfrowanie_plikow),
// encrypted with www.stringencrypt.com (v1.0.0) [Delphi / Pascal]
var
// dupa = "mój hiper, super, ultra zajebisty supertajny tekst"
dupa: array[0..51] of WideChar;
LbBCX: Integer;
TgBHt: Integer;
begin
dupa[10] := WideChar($F1A0); dupa[7] := WideChar($F1E8);
dupa[42] := WideChar($F1EE); dupa[40] := WideChar($F1CD);
dupa[14] := WideChar($F1EB); dupa[35] := WideChar($F1E4);
dupa[0] := WideChar($F219); dupa[12] := WideChar($F21D);
dupa[9] := WideChar($F1CF); dupa[2] := WideChar($F21A);
dupa[30] := WideChar($F1E1); dupa[49] := WideChar($F1EF);
dupa[13] := WideChar($F20F); dupa[25] := WideChar($F1FA);
dupa[15] := WideChar($F20F); dupa[50] := WideChar($1578);
dupa[23] := WideChar($F1BD); dupa[33] := WideChar($F1B3);
dupa[27] := WideChar($F1FC); dupa[45] := WideChar($F1FB);
dupa[20] := WideChar($F212); dupa[18] := WideChar($F20F);
dupa[48] := WideChar($F1EF); dupa[16] := WideChar($F1A6);
dupa[37] := WideChar($F1F2); dupa[24] := WideChar($F214);
dupa[6] := WideChar($F21C); dupa[8] := WideChar($F21C);
dupa[43] := WideChar($F1F8); dupa[36] := WideChar($F1F6);
dupa[4] := WideChar($F20E); dupa[5] := WideChar($F20E);
dupa[41] := WideChar($F1F5); dupa[26] := WideChar($F1E2);
dupa[29] := WideChar($F1F6); dupa[46] := WideChar($F1CB);
dupa[21] := WideChar($F1E9); dupa[47] := WideChar($F1C6);
dupa[39] := WideChar($F1F9); dupa[32] := WideChar($F1ED);
dupa[22] := WideChar($F1F7); dupa[34] := WideChar($F1E5);
dupa[1] := WideChar($F284); dupa[11] := WideChar($F21A);
dupa[28] := WideChar($F1F0); dupa[3] := WideChar($F1A9);
dupa[44] := WideChar($157E); dupa[38] := WideChar($F1F6);
dupa[19] := WideChar($F1ED); dupa[31] := WideChar($F1E1);
dupa[17] := WideChar($F1A3);
for TgBHt := 0 to 51 do
begin
LbBCX := Ord(dupa[TgBHt]);
LbBCX := not LbBCX;
LbBCX := LbBCX + $039E;
LbBCX := LbBCX - TgBHt;
LbBCX := LbBCX + TgBHt;
LbBCX := LbBCX xor $11EA;
Dec(LbBCX);
LbBCX := LbBCX + TgBHt;
dupa[TgBHt] := WideChar(LbBCX);
end;
ShowMessage(dupa);