Hlavně že se pořád řeší hashování hesel v databázi na serveru, ale odesílání hesla v otevřeném tvaru z klienta je považováno za normální. Pak to takhle dopadá.
HTTPS/SSL je něco jiného, to zajišťuje šifrovaný kanál. Ale jinak ano, tohle by mělo být přímo součástí HTTP standardu – heslo by měl hashovat rovnou prohlížeč a měl by zaručovat, že s heslem se pracuje jen v bezpečné části prohlížeče a ven (do skriptů, do HTTP požadavků apod.) se dostane jedině zahashované heslo.
A čemu přesně tohle hashování v prohlížeči bude bránit? Když se útočník dostane k tomu zahashovanému heslu, tak ho prostě na ten server pošle v tom zahashovaném tvaru. Vůbec nemusí rekonstruovat předlohu v té bezpečné části prohlížeče.
Jaká situace by musela nastat, aby útočníkovi co má přístup k těm prohlížečem zahashovaným heslům byla k něčemu užitečná i ta nezahashovaná?
I kdyby prohlížeč ta hesla hashoval na požádání s dodanou solí, tak je nabořený komunikační kanál a útočník může solit podle svých chutí.
Hashování v prohlížeči nemusí být tak triviální, jak si představujete. Součástí hashe může být výzva serveru, takže pokud se útočník dostane k obsahu komunikace, bude mu to k ničemu, protože získaný hash nebude moci použít k ničemu. Představte si schéma hash(výzva serveru + tělo požadavku + hash(identifikace serveru + login + heslo)). Server má uložené jen hash(identifikace serveru + login + heslo). Údaje, které zná server, nelze použít pro přihlášení k jinému systému. Údaje, které putují po síti, lze použít nanejvýš pro zopakování stejného požadavku (pokud si server nebude pamatovat použité výzvy).
oss: Přečtěte si zprávičku i můj komentář ještě jednou a pozorněji. Problém byl v tom, že se heslo posílá v otevřeném tvaru do něčeho, co klient považuje za vlastní infrastrukturu, ale ve skutečnosti to vlastní infrastruktura není.
No a chránit heslo před únikem z vlastní infrastruktury není žádné „akorát“. Je spousta úniků hesel z vlastní infrastruktury – jenom web https://haveibeenpwned.com eviduje přes pět set úniků z webů. Kdo může, snaží se hesla na serveru neukládat v otevřeném tvaru. Problém je, že ukládání hesel je až ten poslední krok. Jenže k chybě může dojít kdykoli před tím. Správné heslo je takové, které zná jenom vlastník toho hesla a nikdo jiný. Ostatní potřebují jen informace pro ověření hesla, nepotřebují znát to heslo samotné. Takže to, že heslo v otevřeném tvaru opouští klienta je principiálně špatně.
hashovanie na klientovi neriesi, nic. Docieli sa tym iba to, ze namiesto lobovolneho retazca posiela iny, vzdy s rovnakych znakov a vzdy konkretnej dlzky. Bezpecnosti to nijak nepomohlo.
Ako clovek co sa v IT uz nejaky cas pohybuje viem, ze hashovanie hesla s challnege na serveri bolo (asi aj stale je) sucastou HTTP specifikacie- nejaky derivat HTTP Basic autorizacie. No ta sa nikde neujala.
Vážně považujete posílání hesel v otevřeném tvaru po síti za bezpečné? To budete ve výrazné menšině, protože většina bude považovat možnost odposlechnutí síťového provozu za znepokojivou.
K tomu aby platil předpoklad "klient vždy komunikuje se správným serverem" existuje TLS které to při správné implementaci zajistí. Je to postup jak se použitím existujícího standardu vyhnout nutnosti komplikovat spousty protokolů na aplikační úrovni.
No a předpoklad "server je vždy naprosto bezpečný a bezchybný" je jen marný výkřik, na tom se živí spousta IT pracovníků a stejně to nemá stoprocentní řešení.
Vážně považujete posílání hesel v otevřeném tvaru po síti za bezpečné?
Myslím, že když si přečtete můj první komentář v diskusi, kde kritizuji posílání hesel v otevřeném tvaru šifrovaným kanálem, po jednoduché úvaze dojdete k tomu, že posílání hesel v otevřeném tvaru nešifrovaným kanálem nebudu hodnotit o nic lépe.
K tomu aby platil předpoklad "klient vždy komunikuje se správným serverem" existuje TLS které to při správné implementaci zajistí.
Tak si přečtěte kapitolku „Závažný bug v Microsoft Exchange Autodiscover funkci vyzrazuje uživatelská hesla“ v článku, pod kterým diskutujete. A zjistíte, že nezajistí.