Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  8 750
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Jeg driver med et login-system, og bruker sessions. Session-variablene inneholder brukernavnet, SHA1-hash av passordet, brukerID (mysql) og brukernivå (bruker, admin, etc).
Det jeg lurer på er om dette med adminnivå i Sessions er litt farlig, og om noen kan modifisere dette for så å bli admin og FUBARe hele siden.
Sist endret av robhol; 29. januar 2008 kl. 15:57.
19.........bokstaver
bavarai's Avatar
Tja, ikke direkte farlig as i know.

Men, hvorfor brukernivå? Mye bedre med feks Acsess($brukerid, 'administrator');

Det er en funksjon som sjekker om den finnes og gir true eller false.

if(Acsess($brukerid, 'Administrator')) {
}
else
{
}

Skjønner?
Sist endret av comi; 29. januar 2008 kl. 16:08.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
"Hvorfor brukernivå"
-jeg er faktisk ikke sikker, det bare ble sånn. Det å bruke en funksjon hver gang jeg skal vite om en har adminprivilegier eller ikke, må nesten bety å koble seg opp til en database hver gang, og det skjer minst en gang per side brukeren laster uansett hvordan jeg programmerer det. Og det blir fort litt load på serveren.
19.........bokstaver
bavarai's Avatar
Bruksmuligheten er iallefall 100ganger bedre. Har du en god server har ikke load og si. (Og nei, ikke hvær gang brukeren går på en ny side. Når personen går inn på en side som sjekker brukerprivelgier.)
Trigonoceps occipita
vidarlo's Avatar
Donor
comi, eg har ikkje peiling på kva du meinte med eksempelet ditt. Kva gjer funksjonen access, og kvifor tek den brukarnivå som argument?

Forøvrig, nei brukaren kan ikkje manipulere session, så slik sett er det heilt trygt. Ser ingen problemer med å bruke det.
19.........bokstaver
bavarai's Avatar
Du lager en funksjon som sjekker oppimot databasen om brukeren har tilgang. Den returnerer enten true eller false. Hvis den er true har du tilgang, hvis ikke har du ikke tilgang.

Feks. Admin.php

if(acsess($_SESSION['bid'], 'Administrator')) {
echo ' Du har tilgang ';
}
else
{
header("location: http://google.no");
}
}
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Takk vidarlo og comi.
Da tror jeg jeg holder meg til $_SESSION.
Sist endret av robhol; 29. januar 2008 kl. 16:50.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av comi
Du lager en funksjon som sjekker oppimot databasen om brukeren har tilgang. Den returnerer enten true eller false. Hvis den er true har du tilgang, hvis ikke har du ikke tilgang.

Feks. Admin.php

if(acsess($_SESSION['bid'], 'Administrator')) {
echo ' Du har tilgang ';
}
else
{
header("location: http://google.no");
}
}
Vis hele sitatet...
Kva er poenget med det om du hentar brukernivået i frå database? Dersom du lar brukarar endre vilkårlege sessions-variablar vil eg hevde at du ikkje sikrar deg spesielt mykje ved å sjekke på nytt frå database.

Eg ville forøvrig ikkje brukt ord for å beskrive tilgangsnivå, eg ville brukt heiltal. Kvifor? Fordi då kan ein tenke seg følgjande: 1 vanlig bruker, 2 som moderator, 3 som admin. Då kan ein sei if($_SESSION[userlevel] >= 2) { // du kan slette innlegg }
Grunnen til at det ikke er farlig (og som jeg ikke ser nevnt her før) er at ting du lagrer i session ikke sendes til nettleseren, men holdes på serveren. Derfor kan det ikke endres.

Det eneste som sendes til nettleseren (i en cookie) er en session id. Selve innholdet holdes på serveren. Derfor er det alltid lurt å bruke sesjonshåndteringen i PHP fremfor å skrive noe hjemmesnekra cookie-greier.
Sist endret av fuzzy76; 29. januar 2008 kl. 21:16.