Wpis z mikrobloga

@loczyn dokładnie tak funkcja która #!$%@? zamienia ciąg znaków na wejściu w inny ciąg znaków. Tak aby w razie co jak będzie wyciek z bazy danych to nikt nie będzie miał twojego hasła. Inna sprawa że niektóre algorytmy #!$%@? spadły z rowerka i da się je odwrócić
  • Odpowiedz
@loczyn: powiem też z perspektywy nooba ale:
password powinien być porównywany jako hashcode, np poprzez bCrypt, sha itp, i to koniecznie
To wszystko powinno działać w backendzie,
ta funkcja wywołuje przy logowaniu jednego użytkownika, wszystkich XD co jest tragiczne wydajnościowo. Tzn jeśli 100 osób bedzie się logować na raz, pętla przeleci 150 tysięcy razy. Powinno być zapytanie do SQL o podany login, i jeśli taki istnieje sprawdzone hasło. Masz 2
  • Odpowiedz
@vvertoi: @Bomfastic: a #!$%@? front czy back? Jak juz doleci i sobie odkoduje i mamy tego "loczyn" to jest jakis sensowny algorytm szukania, bo ja to pamietam tylko taki co porownywal od gory do dolu. Pierwsza literka wszystkie rekordy, to co zostalo druga literka itd. Sa efektywniejsze sposoby?
@Przegrywek123:
  • Odpowiedz
@loczyn: Hashe to jednostronne funkcje skrótu(nie odwracalne tak jak całki np ) której wynik jest zawsze taki sam dla danego hashowanego ciągu. Czyli jak #!$%@? np md5 hasło: dupadupa to zawsze otrzymasz ten sam Hash. Tak wiec podczas ustawiania hasła system zapisał w bazie tylko hash twojego hasła a przy logowaniu porównywane są tylko hashe. Wiec jeśli jakiś Hakier wykradnie bazę z hasłami to ma tylko ich hashe wiec jeśli
  • Odpowiedz
@loczyn: wszystkie operacje na hasle i ogólnie na bazie danych robisz w backendzie.

sensowny algorytm szukania


@loczyn: wykonujesz proste zapytanie do bazy. Na dodatek nie odkodowujesz hasła (bo jeśli da się odkodować to znaczy ze funkcja #!$%@?ąca jest do dupy) tylko uzywasz funkcji ktora weryfikuje czy podane hasło się zgadza z tym hashem, które podany uzytkownik ma zapisane w bazie.
  • Odpowiedz
@loczyn: Nic nie jest odkodowywane. Hasło w bazie danych jest trzymane jako "nsjdfnj294124nj124nj21n4j21n4". Podając hasło, jest ono szyfrowane i zaszyfrowane hasło jest porównywane z tym z bazy danych
  • Odpowiedz
@sekurak:
to lecimy z błędami:
- sql injection (?) a właściwie, to dostęp do bazy z frontu
- wyciąganie wszystkich rekordów, a następnie sprawdzanie w pętli, czy login i hasło się zgadzają
- if ("true" == "true") - niepotrzebny warunek, wystarczyłoby return false
- brak
  • Odpowiedz
@loczyn imo hashowanie powinno odbywać się w backu, najzwyczajniej w świecie nie jest dobrze pokazywać całemu światu jakiego algorytmu #!$%@? używasz. W kwestii bezpieczeństwa im mniej informacji o swojej apce podajesz tym lepiej.

Co do szukania, po skonstruowaniu zapytania SQL, w którym podajesz usera to silnik pewnie pod spodem i tak sprawdza wszystkie rekordy po kolei w poszukiwaniu tego loginu, z tym że radzi sobie z tym jakoś lepiej. Niestety SQL
  • Odpowiedz
@Przegrywek123: tak jak pisałem jak #!$%@? hasło „dupa” nawet sha256 zawsze otrzymasz ten sam wynik. Jak ukraniesz bazę danych gdzie do wygenerowania hasha został użyty czysty sha256 możesz próbować stworzyć hashe najbardziej popularnych haseł używając również sha256 i porównać to z wpisami w bazie
  • Odpowiedz
@loczyn: #!$%@? metod logowania jest, dla każdej sytuacji inne rozwiązanie. Inaczej dla sklepu internetowego, inaczej dla aplikacji wewnętrznej firmy, inaczej na skrzynkę pocztową.
  • Odpowiedz
@loczyn dobra po szybkim doczytaniu jednak warto hashowac hasło po stronie frontu, tzn ten temat to taka rzeka że ja już wymiękam XD ogólny wniosek no #!$%@? logowania nie chcesz robić sam mając jakieś wątpliwości XD
  • Odpowiedz