PHP login - Ez a megoldás helyes?
Sziasztok!
Egy oldalt készítek, ahol bizonyos tartalmak elérése csak regisztráció/bejelentkezés után lehetséges. Ha valaki ugye nincs bejelentkezve, akkor az oldalon nem jelennek meg olyan elemek sem, hogy pl. hozzászólás beküldése, saját profil szerkesztés stb.
Ez jelenleg a következőképpen van megoldva, és működik:
Sikeres bejelentkezés után az index.php fájl elején egy változó ($jogosultsag) kap egy logikai értéket, és az oldal további betöltődése során e változó értékét figyelembe véve töltődik be a tartalom.
pl. if($jogosultság == 1) include('vedett_tartalom.php');
Ez mennyire szerencsés megoldás? Biztonság és működés szempontjából?
Ti is hasonlóképp csinálnátok? Nem akarnék hibás megoldást alkalmazni/megtanulni.
(Remélem érthető a megfogalmazásom.)
■ Egy oldalt készítek, ahol bizonyos tartalmak elérése csak regisztráció/bejelentkezés után lehetséges. Ha valaki ugye nincs bejelentkezve, akkor az oldalon nem jelennek meg olyan elemek sem, hogy pl. hozzászólás beküldése, saját profil szerkesztés stb.
Ez jelenleg a következőképpen van megoldva, és működik:
Sikeres bejelentkezés után az index.php fájl elején egy változó ($jogosultsag) kap egy logikai értéket, és az oldal további betöltődése során e változó értékét figyelembe véve töltődik be a tartalom.
pl. if($jogosultság == 1) include('vedett_tartalom.php');
Ez mennyire szerencsés megoldás? Biztonság és működés szempontjából?
Ti is hasonlóképp csinálnátok? Nem akarnék hibás megoldást alkalmazni/megtanulni.
(Remélem érthető a megfogalmazásom.)
attol függ
Nos a biztonsági szempontot vizsgálva attól függ, hogy a változódba honnan, és hogyan kerül bele az a logikai érték. :) ami egyébként a példában egész :) és persze attól is függ, hogy mennyire van védve az a védett tartalom. ez alatt azt értem, hogy megfelelő mennyiségű okoskodás után, hozzá lehet e valamiképpen férni a 'vedett_tartalom.php'-hoz, vagy esetleg .htaccess-el le van tiltva a hozzáférés :)
Elvileg nem lehet hozzáférni kívülről
A vedett fájl(ok) legelején megvizsgálom, hogy valóban az index.php akarja-e beinkludolni, ha nem akkor hibaüzenet.
E link leírás alapján írom a kódot. Bejelentkezés után ellenőrzöm az adatbázisban, hogy regisztrált-e, vagy az előző bejelentkezése óta nincs-e még lejárva a session_id-je. Ha létezik és nincs lejárva, akkor: $jogosultsag=1, különben $jogosultsag=0;
Utána csak erre a változóra alapozom az oldal további betöltődését.
egyszerű megoldás
Köszönöm
Leírnád nekem?
Még nem tanultam php-t! :S
Elkezdeni
hello!!
http://videosmart.hu/video/hogyan-keszitsunk-adatbazis-alapu-belepteto-php-scriptet-1-resz
2. vidi
http://videosmart.hu/video/hogyan-keszitsunk-adatbazis-alapu-belepteto-php-scriptet-2-resz
Hiányos
Hibalista:
Végülis nem rossz megoldás
Amikor valaki felmegy az oldaladra, akkor 0-ás jogcsoportba kerül bele. Amikor belép, akkor 1-es jogcsoportot kap, amikor mondjuk egy admin lép be, akkor 1-es és 2-es jogcsoportokat kap.
A jogcsoportok kiegészíthetik egymást. Mondjuk van a beloginolt emberke az alapfunkciókkal, és van az admin a bővített funkciókkal, amikhez hozzátartoznak az alap funkciók. Szóval általános esetben nem feltétlen jó csak egy csoportot megadni, ahogy te teszed azzal az egyetlen számmal.
Annyiból jó a megoldás, hogy ez a szám felhasználható extra információ hordozásra. Ez történhet binárisan:
A hátránya az a te módszerednek, hogy az egyes csoportoknak nincsen nevük. Szóval mondjuk ha már bejönnek mondjuk admin jogok, akkor érdemes ezeket a számokat kitenni konstansokba, és úgy ellenőrizni.
Ha több csoport jön be, és a csoportok egymástól függetlenek, akkor érdemes váltani a bináris formára, ha meg már tényleg nagyon sok a csoport vagy egyedi jogokat akarsz minden felhasználónak, akkor meg a felsorolásos formára.
A front controller-es megoldás jó, az gyakorlatilag kötelező a jogok kezelésénél, ha szétszórva lennének az egyes fájlokban a jogokat ellenőrző kódok, az elég komoly hibákhoz vezethetne. Mindenképp érdemes valamilyen központi ellenőrzővel végeztetni a jogok ellenőrzését úgy, hogy ez a központi ellenőrző végezze nálad az includot is. Mondjuk csinálsz egy olyan függvényt, hogy include_if_possible, ami ellenőrzi a jogokat, és utána beszúrja az adott fájlt. Így egy helyen lesz az összes jogosultság ellenőrző kódod. Ezen a helyen elvégezheted a fájlnév alapján központosítva a jogosultság ellenőrzést, nem pedig úgy, hogy minden egyes include elé beteszel egy if-et. Ha kimarad egy if egy include elől, akkor feltörik az oldalad, ha kimarad egy fájlnév a hozzáférhető fájlok listájáról, akkor nem tudsz végrehajtani egy feladatot. Talán érzed a különbséget...