15. september 2007 - 09:00Der er
20 kommentarer og 1 løsning
Hvordan laver jeg bedst login til flere brugere?
Jeg skal til at lave en login side til et site hvor der er flere undermapper. Login oplysningerne skal dirigere brugeren til den rette undermappe. Men hvordan gør jeg det bedst?
Havde forestillet mig noget i retning af en sql der indeholder login, adgangskode og mappe. Passer login og adgangskoden skal brugeren omdirigeres til mappen.
Er det en brugbar løsning - også sikkerhedsmæssigt?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
MEN du skal også lige sikre dig at folk ikke selv kan hoppe til mapperne uden at logge sig ind. Dvs. at alt der foregår i mapperne skal tjekkes for om personen er logget ind (og har adgang til den specifikke mappe).
Ok, login script er lavet og jeg havde tænkt mig at bruge cookies for at checke authorisation. De forskellige brugere skal som sagt videresendes til en specifik mappe. Er der noget med at jeg i cookien kan begrænse brugerens authorisation?
Husk lige på at dine users har fri adgang til at ændre teksten i en cookie, og at en hacker derfor potentielt ville kunne modifiserer en cookie til at se ud som om han er logget ind.
Cookies er gode til at lave auto-login. Men man bør kun gemme username op password i dem - man slipper ikke for at tjekke disse på serveren.
16/09-2007 14:42:35> Næ, ikke specielt. Hvis du alligevel kun tjekker på værdien af auth for at finde ud af om folk er lokket på så er det nok at ændre denne værdi og ignorere username og password.
Denne type hacker-angreb kaldes for "cookie poisoning" (småkage forgiftning):
2. I login hentes mappenavn fra databasen ud fra brugernavn/password. $adgang = "/brugermappe"
3. I hver mappe checkes der i index filen om $adgang == den mappe man nu er i, hvis ja kan man fortsætte og hvis nej bliver man smidt tilbage til login
<?php // check formularens felter for indhold if ((!$_POST[username]) || (!$_POST[password])) { header("Location: login.php"); exit; }
// skab forbindelse til server, og vælg database $conn=mysql_connect ("localhost", "n344951_admin", "...") or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db ("n344951_auth");
// opbyg og udsted forespørgsel $sql = "SELECT TilladtMappe FROM auth_users WHERE Brugernavn = '$_POST[username]' AND Adgangskode = password('$_POST[password]')"; $result = mysql_query($sql,$conn) or die(mysql_error());
// hent antal poster fra forespørgslen; bør være lig 1 if (mysql_num_rows($result) == 1) {
// hvis autoriseret, hent indhold af TilladtMappe $mappe = mysql_result($result, 0, 'TilladtMappe');
session_start(); $_SESSION['mappe'] = $mappe;
} else {
// tilbage til login-forumlar, hvis ikke autoriseret header("Location: login.php"); exit; }
header("Location: $mappe"); exit;
?>
Og index.php i mappen ser sådan ud:
<?php session_start();
if($_SESSION['mappe'] == "/dennemappe") { echo "Du er godkendt"; }else{ echo "Du er ikke godkendt"; } ?>
Det ser ud til at fungere fint . . . er det også godt nok sikkerhedsmæssigt??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.