Hallo allemaal,

Ik ben bezig met een site waarvoor ik een login script met cookies gebruik.
Gisteren probeerde ik het uit en zag tot mijn spijt dat de gebruikers via dit script niet ingelogd kunnen worden. Ik ben uren na uren aan het zoeken geweest wat het probleem zou kunnen zijn, alleen helaas zie ik het zelf niet.

Ik hoop heel erg dat iemand de fout ziet die ik maak, ik ben namelijk nog niet zo ervaren met een loginscript dat werkt via cookies.

phpcode:

<?php
$emailaddress=htmlentities($_POST['emailaddress']);
$password=htmlentities($_POST['password']);

$emailaddress=trim($emailaddress);
$password=trim($password);

$emailaddress=strtolower($emailaddress);
$password=strtolower($password);


include 'configset/conn.php';
include 'web.php';

//Mysql Injection Control

$emailaddress=mysql_real_escape_string($emailaddress);
$password=mysql_real_escape_string($password);

$query=mysql_query("SELECT * FROM Persons Where EmailAddress='$emailaddress' AND Password='$password' AND Active=1");
$count=mysql_num_rows($query);

if($count==1)
{
//Cookies Is Set For 1 Day
setcookie ("user",$emailaddress,time()+600);
setcookie ("password",$password,time()+600);
header("location:loginsuccess.php");
}
else {
setcookie ("user","",time()-86400);
setcookie ("password","",time()-86400);
unset ($_COOKIE[user]);
unset ($_COOKIE[password]);
header("location:index.php");
}
?>

---------------------------

Bij voorbaat dank voor jullie hulp !

Groeten Ricardo

[size=xsmall]Toevoeging op 16/11/2011 09:06:50:[/size]

sorry het hierboven gekopieerde script is fout, zo is het script werkelijk dat script hierboven was enkel om iets uit te proberen.


phpscript:

$emailaddress=htmlentities($_POST['emailaddress']);
$password=htmlentities($_POST['password']);

$emailaddress=trim($emailaddress);
$password=trim($password);

$emailaddress=strtolower($emailaddress);
$password=strtolower($password);

$encryptpass=md5($password);

include 'configset/conn.php';
include 'web.php';
//Mysql Injection Control

$emailaddress=mysql_real_escape_string($emailaddress);
$encryptpass=mysql_real_escape_string($encryptpass);

$query=mysql_query("SELECT * FROM Persons Where EmailAddress='$emailaddress' AND Password='$encryptpass' AND Active=1");
$count=mysql_num_rows($query);

if($count==1)
{
//Cookies Is Set For 1 Day
setcookie ("user",$emailaddress,time()+86400);
setcookie ("password",$encryptpass,time()+86400);
header("location:loginsuccess.php");
}
else {
setcookie ("user","",time()-86400);
setcookie ("password","",time()-86400);
unset ($_COOKIE[user]);
unset ($_COOKIE[password]);
header("location:index.php");
}
?>
Ricardo Verboom op 16/11/2011 10:39:01

Bij het aanmelden word het ip-adres gecheckt en opgeslagen op de database, samen met de verdere logingegevens. Zo kan iedereen dus enkel vanaf dat ipadres inloggen (het is wat onhandig dat weet ik) maar wel redelijk safe.

Als ik met een XXS je cookie jat, vrees ik toch echt onder jouw naam ingelogd te kunnen raken.

En passwords horen niet in een cookie.
gebruik:
- Sessies
- Of een combinatie van Cookies en Database (zoals dit script (die wel wat verouderd is en wat essentiële foutafhandelingen mist) )
je hebt zeker een punt, ik ga hem gewoon volledig aanpassen. Ik weet echter nog steeds niet wat nu de fout in het script is. Site moet binnenkort on-line en in de tijd die ik bezig ben met dat cookie gebeuren uitzoeken kan ik net zo goed dat stukje opnieuw schrijven :P

Dankjewel Aar !
Ik zou voor een rewrite gaan, want is dit behoorlijk onveilig.

Reageren