witam,
we wszystkich poradnikach php zazwyczaj nikt nie pokazuje jak poprawnie zrobić system logowania
tu moje pytanie
Do szyfrowania danych (haseł w bazie danych) czego najlepiej użyć?
Czemu dane sesyjne szyfruje się używając JWT? (czy ogólnie sesje już na starcie nie są niedostępne dla użytkownika?)
jak zrobić to profesjonalne logowanie?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Aincrad
- Postów: 8
- Rejestracja: dni
- Ostatnio: dni
- Postów: 10230
Jeśli zależy Ci na gotowym wyniku to odwiedź stronę laravela, tam jest narzędzie które potrafi postawić szkielet aplikacji już z rejestracją i logowaniem. Zacznij od tego :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 192
Czemu chcesz szyfrować hasła? Lepiej po prostu je za hashować.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
Yukiteru Gromadzki napisał(a):
Czemu chcesz szyfrować hasła? Lepiej po prostu je za hashować.
Zauważ, że autor wątku to typowy początkujący, który nie rozróżnia hashowania od szyfrowania. Poza tym w twojej wypowiedzi widzę również błąd, haseł użytkowników nie wolno szyfrować, a ty podszedłeś, do tego jak do gorszej alternatywy.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Aincrad
- Postów: 8
mr_jaro napisał(a):
Yukiteru Gromadzki napisał(a):
Czemu chcesz szyfrować hasła? Lepiej po prostu je za hashować.
Zauważ, że autor wątku to typowy początkujący, który nie rozróżnia hashowania od szyfrowania. Poza tym w twojej wypowiedzi widzę również błąd, haseł użytkowników nie wolno szyfrować, a ty podszedłeś, do tego jak do gorszej alternatywy.
czyli oznacza to, że mogę użyć algorytmów hashujących dostarczanych przez phpa? bo ogólnie myślałem, że lepiej jest mieć możliwość odszyfrowania hasła.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
Słonecznik napisał(a):
czyli oznacza to, że mogę użyć algorytmów hashujących dostarczanych przez phpa? bo ogólnie myślałem, że lepiej jest mieć możliwość odszyfrowania hasła.
do trzymania haseł używaj hashowania dostarczonego przez php minimum algorytmem bcrypt a obecnie zalecanym przez wszystkich jest argon2id dostępny w php od wersji jeśli się nie mylę 7.2 haseł użytkowników nikt nie ma prawa znać oprócz użytkownika!!!
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Piwnica
- Postów: 7697
Algorytmy, srytmy, jak ktoś ma dostęp do twojej bazy to masz większy problem niż siła algorytmów :D
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
czysteskarpety napisał(a):
Algorytmy, srytmy, jak ktoś ma dostęp do twojej bazy to masz większy problem niż siła algorytmów :D
Wiadomo, ale jak ktoś już się włamał to ograniczmy skutki, także róbmy wszystko zgodnie z obecnymi normami, zaleceniami i prawem. Miałem parę lat temu włamanie do serwera swojego przez błąd admina, jakby ktoś jeszcze mógł odczytać lub zrobić kolizje hasła userów to bym się chyba powiesił.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 215
jeszcze nie powstała funkcja: md5_decode($twoje_haslo); :D
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Piwnica
- Postów: 7697
Ostatnio była afera na wykopie, ktoś przejmował konta, okazało się, że ludzie stosują hasła dupa123 (i to jedno do kilku portali) i potem zdziwienie, na głupotę nie poradzisz, ew. możesz wymusić długie+znaki specjalne.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
@au7h: https://github.com/thereal1024/python-md5-collision metoda o którą prosiłeś
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Na MD5 są generatory kolizji i znam jeden udokumentowany przypadek (dwa programy które mają to samo MD5 ale dają zupełnie inne wyniki) tymczasem Laravel używa tego w Filestore do cache. Czyżby to był powód do niepokoju? Ja jeszcze nie przeczytałem o kolizji na SHA-256 a poza tym jest jeszcze coś takiego jak PBKDF2 czyli pochodna gdzie tak naprawdę chodzi o to żeby całe obliczanie tego odbywało się wolno. Co do tutoriali to niestety (i chyba to już gdzieś nie raz widziałem) to właśnie MD5 był proponowany jako hash.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Piwnica
- Postów: 7697
drorat1 napisał(a):
Ja jeszcze nie przeczytałem o kolizji na SHA-256
SHA2 raczej nikt nie złamie, bardziej chodzi o atak słownikowy na najbardziej banalne hasła, ale tutaj i tak siła algorytmu nie ma znaczenia więc kręcimy się w kółko.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
@czysteskarpety: to samo mówiono o sha-1 a w 2017 złamano, tzn opracowane metody generowania kolizji
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Piwnica
- Postów: 7697
To faktycznie sukces, wymęczyli algorytm z 1993 roku, który w 2005 miał luki, a w 2010 był uważany jako przestarzały :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
Dlatego takie rzeczy robi się z wyprzedzeniem.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Tutaj pewien przykład:
https://www.php.net/hash-pbkdf2
function pbkdf2($algorithm, $password, $salt, $iterations, $key_length, $raw_output = false)
{
$hash_length = strlen(hash($algorithm, null, $raw_output));
$key_blocks = ceil($key_length / $hash_length);
$derived_key = '';
for ($block = 1; $block <= $key_blocks; $block ++)
{
$xorsum = $last = hash_hmac($algorithm, $salt . pack('N', $block), $password, true);
for ($i = 1; $i < $iterations; $i ++)
{
$xorsum ^= ($last = hash_hmac($algorithm, $last, $password, true));
}
$derived_key .= $xorsum;
}
if (!$raw_output) $derived_key = bin2hex($derived_key);
return substr($derived_key, 0, $key_length);
}
$password = 'qwerty12345';
$salt = 'SSxx3232sad21aA4';
$hash1 = hash_hmac('md5', $password, $salt);
$hash2 = pbkdf2('md5', $password, $salt, 1000, 32, false);
var_dump($hash1, $hash2);
string(32) "4f41e20685e5441e8f79d128a7414d92"
string(32) "8a92566f25eaaeb42cdb28727c24a230"
W obu przypadkach 32 znaki czyli załóżmy że zostały przechwycone hashe z bazy i 32 znaki może wskazywać na MD5, haker próbuje to łamać, robić jakieś kolizje, tymczasem nie, bo w serwisie jest jednak PBKDF2 który w tym przykładzie daje również 32 znaki a i wykonuje się dużo wolniej. Dodatkowo tajna sól którą haker również musiałby przechwycić próbując jakichś ataków słownikowych.