Autor Zpráva
Bildr
Profil
Login a heslo jsou vyplněný v klasickým formuláři, který je odesílán na https. Heslo je zahashováno, na jeho konec a začátek je přihozeno pár náhodných znaků. Takto je předáno společně s loginem funci, která si vstupní údaje přechroustá v databázi a vyplivne buď chybu při loginu nebo potvrdí autorizaci. V tomto případě se do session uloží login a zahashovaný heslo i s těmi náhodnými znaky, který se kontoluje na každé načtené stráce již zmíněnou funcí. Když se užitavel odhlásí, session s heslem a loginem se smaže.

Nejsem žádnej guru na zabezpečení, vidíte v tom někdo zásadní nedostatky?
Joker
Profil
Ty náhodné znaky bezpečnost o moc nenavýší, protože aby šlo při každém načtení stránky ověřit to heslo, musí být v session zároveň uloženo které, nebo alespoň kolik těch znaků jsem přidal, takže se dá předpokládat, že útočník by si byl schopný extrahovat samotný hash hesla, na které potom můžu zaútočit.

Možná účinnější metoda na stejném principu je tzv. "solený hash" ("salted hash"):
Uživatel si nastaví heslo. K heslu se připojí nějaký (proměnný) počet náhodných znaků- těm se právě říká "sůl". Až z toho výsledku se potom udělá hash a do databáze se uloží výsledný hash "sůl"- ty znaky, co jsem přidal.
Ověření hesla vypadá tak, že uživatel zadá heslo, na serveru se připojí sůl, udělá hash a zkontroluje.

Vzhledem k tomu, že i když někdo zadá třeba heslo "heslo", hash se dělá z řetězce třeba "heslof8x", je to vcelku odolné vůči prolamování přes tzv. "rainbow tables"
Bildr
Profil
Joker> dobrý poznatek, díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.