Diskuze: Uložení jména a hesla do DB
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
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..
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í.

V PHP se má hashovat funkcí crypt(), v manuálu je example jak se to dělá.
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).
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... 
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..
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í:
"50427af1e447d39c26f4ea36d041ee71";
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. 
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í.
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)
Zobrazeno 10 zpráv z 10.