Werken met sessie variabelen voor security
Ik wens een deel van mijn site af te schermen voor administrators. Deze hebben hun login en paswoord die in een gebruikers tabel zit. Ik ga als volgt te werk.
- In elke pagina (ook die zonder output) zet ik een include naar checklogin.php. Hier wordt nagegaan of er reeds ingelogd is zoniet, of men van de login pagina komt en dan logt men in door de login en pwd te checken met de database.
Hierbij de code. Ik vrees nu dat er echter iets met de sessie variabelen is, want hij 'onthoudt' deze blijkbaar niet. Op een volgende pagina vraagt hij opnieuw om in te loggen.
Mijn vraag: Weten jullie waar het probleem zit, en hebben jullie nog tips waar dit onveilig is?
[linebreak]Code (php) 123456789101112131415161718192021222324252627282930313233343536373839 <?phpsession_register(userid);session_register(username);// deze regel verwijderen na testing security// $username = ;// einde verwijderen//print "$pasw / $login";if ($pasw != || $login != ){ // Check hier aanwezigheid in Database $dbh=mysql_connect ("localhost", "ictalumn", "welcome") or die (I cannot connect to the database because: . mysql_error()); mysql_select_db ("ictalumn_alumni"); $query = ("SELECT id,Vnaam,Anaam,Login,Pwd,Email FROM gebruiker WHERE Login = $login AND Pwd = $pasw");$result = mysql_query("$query") or die("Ongeldige query: " . mysql_error());//print $query; while (list($id, $VNaam, $ANaam, $Login, $Pwd, $Email) = mysql_fetch_row($result)) { //print ("$id, $VNaam, $ANaam, $Login, $Pwd, $Email"); $userid=$id; $username= "$VNaam $ANaam"; } mysql_close($dbh);} if (($userid < 1) || ($userid == )){ header ("Location: http://www.ictalumni.be/crm/login.php"); }?> [linebreak]
Gewijzigd op 01/01/1970 01:00:00 door Maarten
Waarom ook deze regel? Hierna ga je controleren of die voorkomt, ik zou het met && doen, omdat password en loginnaam NOOIT leeg zouden mogen zijn.
Is dit de veilige weg om een gedeelte af te schermen? Bestaan er tutorials hier over hoe je een gedeelte afschermt voor beheerders (security en securityleaks?)
Ik weet zo niet welke dat precies zijn, maar dan zou je eens in de scriptlib moeten kijken.