Autor Zpráva
Honzík_
Profil *
Mám seznam uživatelů a v tabulce v databázi je u každého uložené jaké má oprávnění, tj. co se mu na webu zobrazí a co ne.
Když si při přihlášení uživatele načtu z databáze jeho oprávnění, uložím ho do session. Následně si skripty z té session čtou jaké má ten uživatel oprávnění a podle toho dělají buď to nebo ono. Je to bezpečné?
Str4wberry
Profil
Ano.
DaveLister
Profil
Session se okládaní na serveru, uživateli se odešle pouze cookie s ID session. Takže není žadný způsob jak by uživatel moh změnit data, která jsou uložena v jeho session
Joker
Profil
Honzík_
Samotná data relace (session) se udržují v souboru na serveru a klient se k nim vůbec nedostane (má jen session ID), takže co se týká manipulace daty s tímhle způsobem, je to poměrně bezpečné.
Je jen potřeba dávat pozor na možnost "nabourat" cizí relaci tím, že použiju něčí session ID. Návštěvníci jsou schopní se třeba přihlásit na web a potom poslat někomu e-mailem či na ICQ odkaz, který obsahuje i phpsessid=... Ve chvíli, kdy dotyčný ten odkaz použije, mohl by převzít tu cizí relaci.
DaveLister
Profil
Předávání phpsesid jako parametr GET je ale na většině serverů zakázáno a pro předávání se používa cookie, což je bezpečné ne?
Leo
Profil
Jeste podotknu, ze zalezi na tom, kde mate session data na serveru umistena. Pokud vam vypis session adresare vrati /tmp, pak je spolecny s ostatnimi projekty na stejnem webserveru a to moc bezpecne neni, Leo
Radim Hejhal
Profil
Joker
A jak se takovému převzetí bránit? Ukládání sušenek je jasný, ale zajímá mě jak to řešit u těch, kteří mají sušenky zakázaný. Napadá mě ukládat si to session i IP adresu, ale ta to nemusí vždy vyřešit..
Joker
Profil
Radim Hejhal
Dají se proti tomu dělat různé věci, třeba regenerovat session ID při každém přihlášení (tzn. že když se uživatel odhlásí a přihlásí, dostane nové session ID, ne že používá to samé třeba X měsíců), kontrolovat aktivní relace proti databázi a podobně
tiso
Profil
Joker - už si niekde videl používanie toho istého session ID tým istým človekom po odhlásení a prihlásení?
Leo
Profil
"ale zajímá mě jak to řešit u těch, kteří mají sušenky zakázaný"

Nijak. Napsat mu ze bez cookies to nefunguje. Leo
Radim Hejhal
Profil
Leo
... a že stránky jsou optimalizovány pro rozlišení 1680×1050 :oD Alespoň pro normální, krátkodobé přihlášení bych třeba rád nechal lidem nastavení jaké chtějí. A cookies vyžadoval teprve pro dlouhodobé přihlášení.

Takže bych si představoval pro návštěvníky s povolenými sušenkami uložit session ID do nich a třeba každé dva (tři, sedm) dny vygenerovat nové ID.
A pro návštěvníky s dietou pak umístit session ID do URL a do session navíc umístit a na každé stránce kontrolovat informace o IP a prohlížeči ($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']) a ID regenerovat každou hodinu (dvě, čtvrt).
V tomhle případě by imho ani databáze nemohla přinést nějaké vylepšení. Je to jenom moje myšlenková konstrukce, prosím opravte mě, pokud se pletu nebo to jde udělat líp.
DoubleThink
Profil *
Předávání phpsesid jako parametr GET je ale na většině serverů zakázáno
Tvrdíš, že většina hostingů má nastaveno session.use_only_cookies = 1. Za sebe říkám, že žádný takový neznám.
Leo
Profil
"... a že stránky jsou optimalizovány pro rozlišení 1680×1050 :oD"

To srovnavate nesrovnatelne. Verte, ze ostatni zpusoby (mimo cookie) prenaseni session id nejsou prakticky pouzitelne. Leo
Radim Hejhal
Profil
Dobrá, nikdy jsem to do URL nevkládal, ale pořád jsem žil v domnění, že to nějak nepříliš složitě jde...
srigi
Profil
Předávání phpsesid jako parametr GET je ale na většině serverů zakázáno a pro předávání se používa cookie, což je bezpečné ne?

Musim ta sklamat, ale nie je to 100% bezpecne. Cookie sa da ukradnut bud cez bezpecnostnu dieru v aplikacii (XSS exploitovanie) ale aj hardcorovovesim sposobom.
Leo
Profil
"Cookie sa da ukradnut bud cez bezpecnostnu dieru v aplikacii (XSS exploitovanie) ale aj hardcorovovesim sposobom."

Stoprocentne bezpecne neni nic. Ovsem jine zusoby predavani session id nez cookie jsou jeste horsi, Leo
joe
Profil
Chránit před ukradením session id by se dalo například generováním nějakého hashe, který by se přidal ke všem odkazům.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: