![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
witam, mam takie dwa problemy
1) piszę sobie portal z logowaniem łączę się z bazą w której bedą uzytkownicy, dane itp..itd... padają "magiczne" plecenia dostępu do bazy i tu mam problem polecenie mysql_connect('serwer', 'user', 'hasło'); jest w jakimś pliku php np. połączenie.php, który jest widoczny z poziomu przeglądarki a więc każdy kto trochę się zna może mi taki plik ściągnąć,podejrzeć i po mojej bazie z użytkownikami jak to zabezpieczyć? jak to robicie? 2) hasła uzytkowników powinny być zabezpieczone chcę by to było zabezpiecznie z kodem blowish w manualu php crypt jest dosyć trudno napisane o blowish nie wiem gdzie to salt umieścić a gdzie nie, z md5 nie ma problemu po prostu pisze się $zakodowane_hasło = md5($haslo); podobne z crypt() - po prostu crypt($hasło) czy ktoś może mi podać konkretny przykład z tym blowishem? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Dostęp możesz zabezpieczyć korzystając z htaccess, "wyrzucając" plik poza public_html lub warunkiem "podglądu" np. defined('COSTAM') or die();
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat polecenie mysql_connect('serwer', 'user', 'hasło'); Plików php się nie ściąga. Pliki php się wykonuje i w przeglądarce można zobaczyć tylko wynik wykonania takiego pliku a nie jego zawartość.jest w jakimś pliku php np. połączenie.php, który jest widoczny z poziomu przeglądarki a więc każdy kto trochę się zna może mi taki plik ściągnąć,podejrzeć i po mojej bazie z użytkownikami Co nie zmienia faktu ze Daiquiri dobrze prawi -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
dzięki,
może jeszcze ktoś napisze coś o tym kodowaniu :-) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
(...) z md5 nie ma problemu po prostu pisze się $zakodowane_hasło = md5($haslo); podobne z crypt() - po prostu crypt($hasło) (...) Mylisz się, takie rozwiązanie jest problemem. Rozwiązaniem jest właśnie "sól" + algorytm hashujący. Od biedy może być i md5. W bazie wówczas trzymać musisz dwie informacje: sól (jakiś losowy string) + string, będący efektem hashowania "hasło+sól"). Najwygodniej chyba w 2 oddzielnych kolumnach. Wtedy: 1. Wpisanie hasła użytkownika (przy dodaniu nowego, czy edycji hasła starego): - generujesz sól (losowy string np 20 znaków), robisz hash(sól.hasło_użytkownika) [np md5, sha1 etc]. Sól zapisujesz do kolumny "sól", hash do kolumny "hasło" 2. Sprawdzenie poprawności danych logowania: a. sprawdzasz, czy istnieje user o podanym loginie. Jeśli tak - pobierasz jego "sól", łączysz z podanym przez niego hasłem i hashujesz - ten hash porównujesz z tym zapisanym w bazie. to wszystko ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
nie o komplikacje kodu, ale o zabezpieczenie hasła przed atakami typu słownikowego / rainbow tables. Metoda z solą jest skutecznym zabezpieczeniem przed tym.
A algorytm hashujący - tu ma znaczenie jego podatność na kolizje. MD5 jest już dawno skompromitowany, sha1 o ile dobrze kojarzę też. Ja osobiście używam i polecam sha256, chociaż zapewne to przegięcie w druga stronę ![]() Ten post edytował drPayton 14.06.2011, 18:41:13 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
ok, napisałem
$pass = 'haslo'; $base64="./0123456789ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnoprstuvwxyz"; $prefix = "$2a$"; $twodigit = rand(4, 31); if($twodigit<10) { $twodigit = str_pad($twodigit, 2, 0, STR_PAD_LEFT); } $blowfish = $prefix.$twodigit."$".substr(str_shuffle($base64), 0, 22)." $zakodowane = crypt($pass, $blowfish); takie coś może byc? :-) Ten post edytował Astronovi 14.06.2011, 19:34:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:41 |