Sicherer Bereich mit Cookies

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hi Leute,

für einen sicheren, Passwortgeschützten Bereich, habe ich mir gedacht, dass man sog. Security ID's in eine DB einträgt, und diese immer nach jeder neu aufgerufenen Seite ändert.
Beim clienten speichert man diese mit Cookies und gleicht sie ab. Stimmen Sie, wird der Zugang gewährt, wenn sie falsch sind, wird ein Fehler ausgageben.

Das einzige Proplem ist dabei, dass ich das mit dem neusetzten der Cookies und mit dem neueintrag nicht hinbekommen (siehe nach if-Abfrage onlog.php).

Könntet Ihr mir dabei helfen?

Viele Grüße (und Danke :freaky: )

CPU

login.php
PHP:
<?php
include("wsms/inc.ini.php");

if(isset($_POST['button'])) {
$user_name_post = $_POST['user'];
$user_passwort_post = md5($_POST['passwort']);
if($user_name_post == "" || $user_passwort_post == "") {
$error_message = "<span id=\"error_f\">Sie haben weder Ihren Benutzernamen noch Ihr Passwort eingegeben.</span><br/>";
} else {
//Ueberprüfe Login
//Auslesen der Ergebnisse für den Benutzernamen
$sql_check_a = mysql_query("SELECT id FROM user WHERE user_name = '$user_name_post';");
$check_a     = mysql_fetch_row($sql_check_a);
//Auslsen der Ergebnisse für das Passwort
$sql_check_b = mysql_query("SELECT id FROM user WHERE user_passwort = '$user_passwort_post';");
$check_b     = mysql_fetch_row($sql_check_b);
//Ausgabe des Ergebnis
if($check_a == "0" || $check_a == "") {
$error_message = "Ihr Benutzername ist nicht vorhanden.";
} elseif($check_b == "0" || $check_b == "") {
$error_message = "Ihr Passwort ist falsch.";
}
if($error_message == "") {
//Überprüfe Pwd / rights
$i = 0;
$sql_login = mysql_query("SELECT user_name,user_passwort,user_reg_st FROM user WHERE user_name = '$user_name_post' AND user_passwort = '$user_passwort_post';");
	while($erg = mysql_fetch_array($sql_login)) {
		$user_name     = $erg['user_name'];
		$user_passwort = $erg['user_passwort'];
		$user_reg_st   = $erg['user_reg_st'];
	$i++;
	}
if($user_name != $user_name_post && $user_passwort != $user_passwort_post || $user_reg_st != 1) {
$error_message = "<span id=\"error_f\">Sie sind nicht Freigeschaltet.</span>";
} else {
$message = "<span id=\"true\">Sie wurden erfolgreich angemeldet.<br/><a href=\"onloged.php\">Weiter</a></span>";
//Generiere Zufallszahl
$bigint = time()*5;
$sec_id_a = rand(1997899239, $bigint);
$sec_id_b = rand(1973787343, $bigint);
//Setze Cookies, trage in DB ein
$sql_sec = mysql_query("UPDATE user SET sec_id_a = '$sec_id_a',sec_id_b = '$sec_id_b' WHERE user_name = '$user_name' AND user_passwort = '$user_passwort_post';");
if(!$sql_sec) {
$error_message = "<span id=\"error_f\">Fehler bei der Anmeldung.</span>";
} else {
//Cookies setzen, wenn Eintrag erfolgreich
setcookie("sec_id_a",$sec_id_a);
setcookie("sec_id_b",$sec_id_b);
$user_coo = md5($sec_id_a)."|".$user_name."|".md5($sec_id_b)."|".md5($user_name);
setcookie("user",$user_coo);
setcookie("user_a",$user_name);
$error_message = $message;
}
}
} else {
}
}
}
echo $error_message;
?>


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Benutzer: <input type="text" name="user" maxlength="30"><br/>
Passwort: <input type="password" name="passwort" maxlength="30"><br/>
<input type="Submit" name="button" value="Login">
</form>

onloged.php
PHP:
<?php
include("wsms/inc.ini.php");

//Cookies erhalten
$sec_id_a_coo  = $_COOKIE['sec_id_a'];
$sec_id_b_coo  = $_COOKIE['sec_id_b'];
$user_coo      = $_COOKIE['user'];
$user_name     = $_COOKIE['user_a'];
//Codieren von Cookies
$md_sec_id_a   = md5($sec_id_a_coo);
$md_sec_id_b   = md5($sec_id_b_coo);
$nnn = explode('|', $user_coo);
$md5_usera = md5($user_name);
$md5_sec_a = $nnn['0'];
$user_name = $nnn['1'];
$md5_sec_b = $nnn['2'];
$md5_usern = $nnn['3'];
$mm = $sec_id_a_coo;
//Cookies überprüfen
if($md5_sec_a == $md_sec_id_a && $md5_sec_b == $md_sec_id_b && $md5_usern == $md5_usera) {
//mit DB absprechen
$i = 0;
$sql_login = mysql_query("SELECT sec_id_a,sec_id_b,user_rights,user_reg_st FROM user WHERE user_name = '$user_name';");
	while($erg = mysql_fetch_array($sql_login)) {
		$sec_id_a      = $erg['sec_id_a'];
		$sec_id_b      = $erg['sec_id_b'];
		$user_rights   = $erg['user_rights'];
		$user_reg_st   = $erg['user_reg_st'];
	$i++;
	}
$auto = 0;

if($sec_id_a_coo == $sec_id_a && $sec_id_b_coo == $sec_id_b && $user_reg_st == 1 || $user_rights >= 0)
{
//Hier sollten die sec id's geändert werden, bekommich aber nicht hin!
?>
Status: eingeloged


<?php
} else {
?>
Fehler in Sec_id'S oder reg st
<?php
}
} else {
echo"Fehler";
}
?>
 
Zurück
Oben