Myślę, że używanie md5 lub sha256 lub dowolnego skrótu zoptymalizowanego pod kątem szybkości jest całkowicie w porządku i jestem bardzo ciekawy, jak inni użytkownicy mogą się zemścić. Oto moje powody
Jeśli pozwolisz użytkownikom używać słabych haseł, takich jak Bóg, miłość, wojna, pokój, to bez względu na szyfrowanie nadal będziesz zezwalać użytkownikowi na wpisanie hasła, a nie skrótu, a te hasła są często używane jako pierwsze, więc to NIE będzie mieć cokolwiek wspólnego z szyfrowaniem.
Jeśli nie używasz SSL lub nie masz certyfikatu, atakujący nasłuchujący ruchu będą w stanie wyciągnąć hasło, a wszelkie próby zaszyfrowania za pomocą javascript itp. Będą po stronie klienta i łatwo je złamać i pokonać. Znowu to NIE będzie miało nic wspólnego z szyfrowaniem danych po stronie serwera.
Ataki siłowe wykorzystają słabe hasła i ponownie, ponieważ pozwalasz użytkownikowi wprowadzić dane, jeśli nie masz ograniczenia logowania wynoszącego 3 lub nawet trochę więcej, problem ponownie NIE będzie miał nic wspólnego z szyfrowaniem danych.
Jeśli twoja baza danych zostanie naruszona, najprawdopodobniej wszystko zostało naruszone, w tym twoje techniki haszowania, bez względu na to, jak tajemniczy zostałeś. Znowu może to być atak XSS niezadowolonego pracownika, wstrzyknięcie sql lub inny atak, który nie ma nic wspólnego z szyfrowaniem hasła.
Uważam, że nadal powinieneś szyfrować, ale jedyne, co widzę, że szyfrowanie robi, to uniemożliwia ludziom, którzy już mają lub w jakiś sposób uzyskali dostęp do bazy danych, po prostu głośno odczytując hasło. Jeśli jest to ktoś nieautoryzowany w bazie danych, masz większe problemy, o które musisz się martwić, dlatego Sony zostało zabrane, ponieważ uważali, że zaszyfrowane hasło chroni wszystko, w tym numery kart kredytowych, wszystko, co robi, to chroni to jedno pole, to wszystko.
Jedyną czystą korzyścią, jaką widzę w złożonym szyfrowaniu haseł w bazie danych, jest opóźnienie odczytania haseł przez pracowników lub inne osoby, które mają do niej dostęp. Więc jeśli jest to mały projekt lub coś, czego nie martwiłbym się zbytnio o bezpieczeństwo po stronie serwera, zamiast tego martwiłbym się bardziej o zabezpieczenie wszystkiego, co klient może wysłać do serwera, takiego jak sql injection, ataki XSS lub mnóstwo innych sposobów mogą zostać naruszone. Jeśli ktoś się nie zgadza, z niecierpliwością czekam na przeczytanie, w jaki sposób super zaszyfrowane hasło jest koniecznością po stronie klienta.
Powodem, dla którego chciałem to wyjaśnić, jest to, że zbyt często ludzie uważają, że zaszyfrowane hasło oznacza, że nie muszą się martwić, że zostanie ono naruszone, i przestali martwić się o zabezpieczenie witryny.