• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Hashowanie hasła w JS.

VPS Starter Arubacloud
0 głosów
1,839 wizyt
pytanie zadane 2 sierpnia 2017 w JavaScript przez Muhin Gaduła (4,120 p.)
Cześć,

Piszę sobie formularz logowania wysyłany ajaxiem do serwera. Dane są wysyłane jsonem i później odczytywane w PHP. Niby wszystko byłoby ok, ale wydaje mi się, że wysyłanie hasła w ten sposób nie jest zbyt bezpieczne. Wiem, że w JS da się zahashować w jakiś sposób hasło, ale nie umiem nigdzie wyczytać jak to zrobić wraz z deszyfracją tego hasła na serwerze. Miał ktoś kiedyś styczność z czymś takim i czy mógłby mi to wytłumaczyć?
komentarz 2 sierpnia 2017 przez Jedras Maniak (54,860 p.)
Jak chcesz się brać za takie ochrony to bardziej by się opłaciło zacząć SSL używać.

3 odpowiedzi

0 głosów
odpowiedź 2 sierpnia 2017 przez Alex.Ironside Stary wyjadacz (14,880 p.)
takie cus?

https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery

Ale to nie jest chyba dobry pomysl. Moze ktos bardziej doswiadczony sie wypowie ale mi zawsze wpajano ze nie robi sie zadnej autoryzacji javaScriptem bo jest jawny.
0 głosów
odpowiedź 2 sierpnia 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
edycja 2 sierpnia 2017 przez PoetaKodu

https://stackoverflow.com/questions/3715920/is-it-worth-hashing-passwords-on-the-client-side

Poszukaj implementacji algorytmów hashujących. To jakiego użyjesz już zależy od Ciebie. Generalnie jest to dosyć ciężki orzech do zgryzienia, musisz brać pod uwagę wiele przypadków. Przeczytaj odpowiedź z tego tematu i wywnioskuj jakiego algorytmu chcesz używać, wtedy poszukaj jego implementacji w internecie:

https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed

Edit: tutaj masz implementacje algorytmu FNV-1a

https://stackoverflow.com/a/22429679

Według tego poprzedniego linku jest to najlepszy algorytm (razem z algorytmem Murmur2).

Mimo tego lepszym rozwiązaniem i tak będzie użycie SSL, bez którego takie szyfrowanie i tak nie wiele da.

0 głosów
odpowiedź 2 sierpnia 2017 przez Comandeer Guru (599,730 p.)
SSL, a nie hashowanie! SSL zabezpiecza transmisję danych przez Sieć (szyfruje ją), a tego chcesz.

Jak se zahashujesz hasło, to nic z nim już na serwerze nie zrobisz.
1
komentarz 2 sierpnia 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Tak sobie czytam wasze dyskusje i zastanawia mnie tylko jedno, czy na pewno warto się tak mocno zastanawiać nad "zabezpieczaniem" hasła po stronie klienta?

Czy nie lepiej puścić do na serwer i tam dopiero skorzystać z gotowych metod np. bcrypt z solą itp.? Jeśli mamy ryzyko jakiś "złośliwych" znaków to zawsze można to przepuścić w ajax np. jako base64. JS przeglądarkowy ma do tego gotową metodę WindowBase64.btoa(). Na serwerku również łatwo to odczytać, np. base64_decode w PHP czy przy użyciu Buffer w Node i dopiero na tych danych bawić się w zabezpieczanie.

Nie krytykuję Waszej dyskusji, wręcz przeciwnie rzadko zdarza się, że można poczytać ciekawe rozmowy na te tematy, tylko zastanawia mnie po prostu sens robienia tego u klienta?
komentarz 2 sierpnia 2017 przez Comandeer Guru (599,730 p.)

Ciekawe rozmowy = strumień ataków ad personam… :|

Nie, robienie tego client side nie ma sensu. Dlatego zwracam uwagę na aspekt SSL.

2
komentarz 2 sierpnia 2017 przez Tomek Sochacki Ekspert (227,510 p.)
e tam, kto jak kto ale Comandeer jest akurat chyba odporny na ataki i zaczepki :)

a tak na marginesie to w kontekście tego wątku i zabaw u klienta to powinieneś wspomnieć o swoim nowym wpisie blogowym (gdzie doprowadzasz do bankructwa lotto)... ciekawie się komponują :)
komentarz 2 sierpnia 2017 przez Comandeer Guru (599,730 p.)
Hehe, no niby tak… Ale to jednak zupełnie inny aspekt bezpieczeństwa client-side ;)
komentarz 4 sierpnia 2017 przez Muhin Gaduła (4,120 p.)
Właśnie tak się zastanawiam, co w wypadku gdybym nie dał żadnego hashowania hasła po stronie klienta, żadnego SSL itp, a użytkownik strony miałby nasłuchiwaną sieć przez osobę trzecią która nie ma dobrych zamiarów. Kto ponosi za to odpowiedzialność, ja, czy użytkownik strony? teoretycznie to nie moja sprawa, bo hasło nie wyciekło z serwera czy coś, ale jednak mnie to zastanawia.
komentarz 4 sierpnia 2017 przez Comandeer Guru (599,730 p.)
Teoretycznie to Twoja sprawa, bo nie zapewniłeś minimalnego poziomu bezpieczeństwa w czasie przesyłu danych na serwer.

Podobne pytania

0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 29 stycznia 2021 w PHP przez KrzysztofS Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 1,051 wizyt
pytanie zadane 6 czerwca 2019 w PHP przez DODO Bywalec (2,950 p.)
0 głosów
2 odpowiedzi 459 wizyt
pytanie zadane 12 października 2019 w PHP przez kamiz Obywatel (1,010 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...