Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Uložení jména a hesla do DB

Aktivity
Avatar
alfonz
Člen
Avatar
alfonz:31.3.2014 15:24

Čau,
Chtěl bych se zeptat jestli je správně ukládat do DB jen hash hesla osolené jménem(+ další sůl) nebo je lepší mít uložený hash(jméno + sůl) a jméno?

Odpovědět
31.3.2014 15:24
lmao
Avatar
Uživatel sítě :31.3.2014 18:30

Ahoj, spíže heslo osol náhodným řetězcem o 40 znacích (čísla a písmena).

Takže ulož osolený hash hesla a i tu sůl..

Nahoru Odpovědět
31.3.2014 18:30
Chybami se člověk učí, běžte se učit jinam!
Avatar
Mark Vajšbejn:31.3.2014 19:31

Tady je pak аle problém že nemůže tady Alfonz zkontrolovat to, že se uživatel přihlásil.. protože se za sebou na 99.99 periodických procent nemůže vygenerovat náhodný řetězec stejný..

Já bych to doporučil udělat tak, jak to má dělaný Minecraftový plugin authme, ten udělá to, že vygeneruje náhodný řetězec který do Mysql databáze uloží v takovém formátu: Ten náhodný řetězec. "$" .Heslo osolené náhodným řetězcem. "$" .A dejme tomu jméno s heslem v md5.

Na nějakém takovém principu hashuje tento plugin, a pokud chces data zkontrolovat tak vezme první kus hesla, tedy to před prvním $, a tím to nějak smíchá s heslem a poté jménem(+heslem) a po částech zkontroluje.

Toto je poměrně neprolomitelné, protože náhodný řetězec se stále u každého uživatele mění, a je to lepší než nějaký stálý klíč který hashujes s jménem či heslem a navíc, dá se to bez problémů zkontrolovat kupříkladu v přihlášení.
:)

 
Nahoru Odpovědět
31.3.2014 19:31
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na alfonz
David Hartinger:31.3.2014 19:40

V PHP se má hashovat funkcí crypt(), v manuálu je example jak se to dělá.

Nahoru Odpovědět
31.3.2014 19:40
New kid back on the block with a R.I.P
Avatar
Odpovídá na Mark Vajšbejn
Uživatel sítě :31.3.2014 19:45

Nevidím důvod měnit stále sůl, která spíže slouží hlavně k tomu aby nedošlo ke stejným hashům v db s jinými uživateli. Jak zmínil david, stačí Blowfish či sha-512 (crypt http://www.php.net/…on.crypt.php).

Nahoru Odpovědět
31.3.2014 19:45
Chybami se člověk učí, běžte se učit jinam!
Avatar
asanos
Člen
Avatar
asanos:1.4.2014 15:00

Já to řeším tak, že mám 3 sloupce:
Jméno, heslo(hash) a salt...
Pro přihlášení si pomocí SELECT salt WHERE jmeno=? vytáhnu salt a udělám otisk zadaného hesla s vytaženým saltem, které pak porovnám s obsahem heslo(hash).
_____________­_________
Na hashování používám:
blowfish $2y$ funkce crypt(), se sílou víc jak 10.
V každém případě mi statický salt připadá jako nesmysl. Útočník nějak zjistí, například 2 hesla a pak si z toho vytáhne salt.
_____________­________
Mimochodem, nikdy nepoužívejte MD5, nebo SHA-1!
Ještě jsem nenarazil na žádný hash z těchhle 2, který by neměl zaindexovaný google...
_____________­________
Slyšel jsem o způsobu, kdy byl ještě ten salt v db zahashovaný statickým hashem, ale asi to nebyl nenávratný hash, ale nějaký dopočitatelný, protože jinak netuším jak to mohlo fungovat... ;)

Nahoru Odpovědět
1.4.2014 15:00
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Uživatel sítě :1.4.2014 16:14

Salt neslouží k tomu aby byl hash bezpečnější, slouží pouze k tomu aby se v databázi nenašli uživatelé se stejnými hashy. Ničemu nevadí, že ten salt je v čitelně podobě. Když heslo zahashuješ SHA-512, tak už to stačí. Osolíš heslo, zahashujes a při přihlášení prostě sůl přiřadíš a otestuješ.

SHA-512 nebo bcrypt (crypt + blowfish) můžeš pouze prolomit hrubou silou, či zkusit štěstí na googlu..

Nahoru Odpovědět
1.4.2014 16:14
Chybami se člověk učí, běžte se učit jinam!
Avatar
asanos
Člen
Avatar
asanos:1.4.2014 18:24

Jak píše Uživatel sítě ....
Hash má sloužit k tomu, aby se nenašli 2 uživatele se stejným hashem...
_____________­____________
hash z textu a statického saltu, bude vždy hash z textu a statického saltu....

Příklad:
Hash md5:
echo md5("TextSalt");
Vrátí:
"50427af1e447­d39c26f4ea36d041e­e71";

Klidně to spusťte 100x, vždy to vrátí to samé..
_____________­____________
Pokud budou mít 2 uživatelé heslo "Text", tak ten hash bude pořád stejný a ničeho jsme tak nedosáhly!

Omlouvám se pokud můj příspěvek tak nevyzněl. ;)

Editováno 1.4.2014 18:24
Nahoru Odpovědět
1.4.2014 18:24
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na asanos
David Hartinger:2.4.2014 12:51

To neplatí vždy. Funkce crypt() si přidává sůl přímo do hashe, sůl se generuje třeba randomem, může být vždy úplně jiná. 2 jiné hashe mohou být ze stejného hesla, ověřuje se to potom ne porovnáním, ale zas zahashováním. Na manuál jsem tu už odkazoval :) BTW md5 je už to samé jako plaintext a i od SHA se pomalu opouští.

Nahoru Odpovědět
2.4.2014 12:51
New kid back on the block with a R.I.P
Avatar
mkub
Tvůrce
Avatar
mkub:3.4.2014 20:18

MD5 je tak maximalne pouzitelne iba na vytvorenie kontrolneho suctu suboru, nie na na hash hesla...
MD5 je uz niekolko rokov prelomena sifra a ako David pise, nie je problem z toho MD5 hashu dostat spat uplnu informaciu (co sa da zneuzit crackermi a hackermi na lamanie hesiel)

 
Nahoru Odpovědět
3.4.2014 20:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.