ugrás a tartalomhoz

Mennyire biztonságos egy session-ben tárolni a felhasználói adatokat?

Anonymous · 2006. Május. 23. (K), 14.53
Sziasztok!

Van egy saját fejlesztésű kis cms rendszerem, amelynél a belépés során a $_SESSION globális tömbben tárolom le sikeresen bejelentkeztetett felhasználó usernev-ét. A rendszer úgy van kialakítva, hogy az adatbázis users táblájában mindössze egy admin nevű enum típusú mező értéke dönti el, hogy milyen jogosultsági szinten van az adott user.

Na, szóval, az lenne a kérdésem, hogy mennyire lenne biztonságos az, hogy ezt az értéket is eltárolom a $_SESSION tömbben? Így egy csomó lekérdezést meg lehetne spórolni ezzel a húzással. Vagy valahogy másképp kéne lekezelni?

Köszönöm előre is a hozzászólásokat!
PJ
 
1

Nem probléma...

janoszen · 2006. Május. 23. (K), 16.33
Nem gond, csak ügyelj a munkamenet biztonságára. Volt róla cikk itt is.
2

változó adatok

Anonymous · 2006. Május. 23. (K), 16.39
És ha belépés után, munka közben változik a jogosultsága? Egyedi azonosítót tárolj csak munkamenetben. Sztem mindösszesen 1 lekérdezést spórolsz csak meg. Ha többet, akkor valahol máshol van a bibi. Sztem.
3

Nem biztos

Anonymous · 2006. Május. 23. (K), 16.49
Lehet, hogy tényleg én csináltam rosszul, viszont a jogosultságoknak épp az a lényege, hogy más-más funkciót érhet el egy mezei user, mint egy adminisztrátor.
Igy minden ilyen kétes funkció előtt megspórolom azt, hogy le kelljen kérdeznem azt, hogy valójában milyen jogosultsággal rendelkezik. Vagy szerinted tévúton járok? Te egy lekérdezés után hol tárolnád el ezt az adatot?
4

Így valóban...

-zsolti- · 2006. Május. 23. (K), 18.03
...van értelme megspórolni azt a lekérdezést, ha "csak ennyiből" áll a jogosultságkezelésed. Az előző hozzászóló szerintem arra gondolt, amikor olyan összetett jogosultságok vannak, hogy akár 50-100 különböző műveletre is ki lehet osztani jogokat. Na ilyenkor lehet egy olyan probléma, hogy egy felsőbb szintű adminisztrátor akkor veszi el valamilyen jogát egy másik adminisztrátornak, miközben az "be van lépve". Ilyenkor ugye az adatbázisban módosul a joga, a session-jében viszont mindaddig a régi lesz jelen, amég ki nem lép/meg nem szűnik a munkamenet. Huh, kicsit bonyolultan írtam.
5

Ennel a rendszernel mindössze néhány...

Anonymous · 2006. Május. 23. (K), 19.59
... alapművelet van.

User:
- tud tartalmat beküldeni, amelynek a státusza alapértelmezetten publikálatlan, amíg egy admin ki nem engedi
- tud hozzászólni a fórum témákhoz, saját aláírása lehet, stb.
- a userek egymásnak tudnak közvetlen üzeneteket küldeni

Admin:
- publikussá tehet cikkeket, illetve írhat saját maga is, szerkeszthet, törölhet
- fórum témáknál hozzászólásokat szerkeszthet, moderálhat

Superuser:
- mindent tud, amit az admin
- felhasználóknak jogokat oszthat ki
- mentheti az adatbázist, illetve minden beállításhoz hozzáfér a rendszernél

Nos, amint látszik, nem egy nagy wasistdas, amit csináltam, viszont sokat tanultam közben, nekem ez volt az elsődleges cél. Ennél a rendszernél akkor hasznos lehet a $_SESSION tömbben tárolni, hogy melyik csoport tagja az adott felhasználó? Nyilván fennáll a veszély, hogy épp be van jelentkezve valaki admin-ként és épp elveszik ezt a jogát, de amíg ki nem lép, addig szabadon garázdálkodhat. Vagy maradjak a véleményem szerint lassabb verziónál és mindig kérdezzem le, hogy van-e joga az adott funkcióhoz?
6

-

breakline · 2006. Május. 23. (K), 23.25
Másik oldalról nézve, csinálhatod azt is, h ha egy táblában tárolod a session adatokat (pl. statisztikához, vagy logoláshoz), akkor abban megkeresed, amikor éppen "adminolsz" h a felhasználó be van-e jelentkezve éppen. Ha be van éppen, akkor két esetet tudok elképzelni.
1. megvárod míg kijelentkezik, v "lejár" a session :)
2. megszünteted a session-t (nálam okosabbak talán tudják, h ehhez elég-e a sessionöket tárolo mappából az adott session id-hez tartozo file-t törölni, ez esetben ezt lekérdezed az adatbázisból (a session táblából) és törlöd, így a felhasználó az oldal ujratöltésekor rögtön visszajut a belépőoldalra vagy máshova, ezt persze összekötheted bármilyen modosítással, így automatikusan müködne)

Legalábbis én így csinálnám, bár fogalmam sincs h ez működne is, ki kell probálni:)

üdv
BL