Autor | Zpráva | ||
---|---|---|---|
JakubHekal Profil |
#1 · Zasláno: 31. 1. 2019, 20:37:39
Zdravím
Do session na stránce uložím nějaká data, která tam mají zůstat 1 měsíc. Zatím to řeším takto: ini_set('session.gc_maxlifetime', 60*60*24*30); ini_set('session.cookie_lifetime', 60*60*24*30); Moc díky za případnou pomoc. |
||
RastyAmateur Profil |
JakubHekal:
Ale session mají zůstat uložená pouze po dobu této návštěvy, ne? Když chceš ukládat proměnnou na jeden měsíc, použij cookies Pokud opravdu potřebuješ prostě session uchovávat delší dobu, napadá mě problém v tom, že jinde můžeš mít nastaveno něco menšího (třeba těch standardních 1440) If different scripts have different values of session.gc_maxlifetime but share the same place for storing the session data then the script with the minimum value will be cleaning the data. (zdroj)
|
||
Keeehi Profil |
#3 · Zasláno: 31. 1. 2019, 22:33:50
RastyAmateur:
„Pokud opravdu potřebuješ prostě session uchovávat delší dobu, napadá mě problém v tom, že jinde můžeš mít nastaveno něco menšího (třeba těch standardních 1440)“ Úplně si nejsem jistý že to bude tento případ. Podle popisovaného chování není problém v tom, že by se cookies mazaly brzo, ale jen při zavření prohlížeče. Tedy alespoň tak to chápu já. Já si myslím, že to bude spíš souviset s tímto. HTTP cookies | MDN » Session cookies |
||
JakubHekal Profil |
#4 · Zasláno: 1. 2. 2019, 10:08:12
Moc děkuji za návrhy.
Vzhledem k tomu že ukládám heslo tak jsem nechtěl používat cookies, ale session. |
||
blaaablaaa Profil |
#5 · Zasláno: 1. 2. 2019, 10:12:09
JakubHekal:
Heslo by nemělo být uložené nikde, ani v session. Nestačí si do cookies poznačit nějaký token? |
||
Keeehi Profil |
#6 · Zasláno: 1. 2. 2019, 10:46:59
blaaablaaa:
Token v cookie je vlastně session ID. JakubHekal: Ale jinak má blaaablaaa pravdu. Samotné heslo bys neměl mít uložené dokonce nikde. Ani v cookie, ani v session a dokonce v databázi. Měl bys mít v databázi uložený pouze hash hesla. K tomu slouží funkce password_hash a pro ověření password_verify. Standardní návrh je, že při přihlášení oveříš heslo oproti hashi v databázi a pokud to projde, tak do sessio uložíš uživatelovo id. A to už jen na dalších stránkách používáš. Při odhlášení nemusíš dělat nic jiného že to id ze session smažeš. |
||
JakubHekal Profil |
Keeehi a blaaablaaa
Děkuji za nápad. Teď mám hesla zahashovana jenom v databázi a session uložené nezahasovane a na každé stránce jsem je porovnával. |
||
JakubHekal Profil |
#8 · Zasláno: 1. 2. 2019, 14:12:05
Problém vyřešen :-)
|
||
Davex Profil |
#9 · Zasláno: 1. 2. 2019, 18:59:52
JakubHekal:
„Problém vyřešen :-)“ Také by bylo dobré napsat čím to bylo a jaké je řešení. |
||
JakubHekal Profil |
#10 · Zasláno: 2. 2. 2019, 14:27:46
Každý uživatel při registraci dostane vygenerované uid které se po přihlášení uloží do cookies a na každé stránce se kontroluje jeho platnost
|
||
blaaablaaa Profil |
#11 · Zasláno: 3. 2. 2019, 19:13:22
JakubHekal:
Jestli je to obyčejné číslo, není to dobrá volba. Kdokoliv může (třeba i automaticky) zkusit nastavovat náhodná čísla a přihlašovat se za tvé uživatele. Správné řešení je prodloužení doby platnosti session, jak psal Keeehi, nebo nějaké vlastní řešení session/tokenů (třeba vždy vygenerovat náhodný hash, uložit do db s jeho platností, možnost přidat třeba i ověření na user agenta apod., po kterém budeš chtít nové přihlášení). |
||
JakubHekal Profil |
#12 · Zasláno: 3. 2. 2019, 19:33:03
blaaablaaa:
Jak by se ten případný útočník dostal k úpravě cookies na mém webu? |
||
Radek9 Profil |
#13 · Zasláno: 3. 2. 2019, 19:50:32
JakubHekal:
Cookies se ukládají u uživatele, ne u tebe na webu. Takže si je kdokoli může jakkoli změnit. Pokud by znal tvoje UID, tak ho stačí vyplnit do cookie a bude přihlášen jako ty. |
||
Časová prodleva: 5 let
|
0