Hallo,
habe eben mit entsetzen fest gestellt, dass mein Login Verfahren mit sessions unsicher ist.
wenn ich 2x das login fenster geöffnet habe, mich in einem fenster mit meinen benutzerdaten einlogge und anschließend auslogge und dann im 2. fenster einen benutzernamen und ein beliebiges passwort eingebe, kommt zwar eine fehlermeldung, wenn ich jedoch im 1. fenster irgendwo drauf klicke, sehe ich dass ich in einem fremden benutzerprofilo bin.
das hier ist der code:
PHP-Code:
if (isset($_POST['login']))
{
$conn =mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db("$dbname", $conn);
$query = mysql_query("SELECT * FROM game_user WHERE user = '$_POST[username]' AND pass = '$_POST[password]' AND activate = '1' AND sperre = '0'");
$n_active = mysql_query("SELECT * FROM game_user WHERE user = '$_POST[username]' AND pass = '$_POST[password]' AND activate = '0'");
$sperr = mysql_query("SELECT * FROM game_user WHERE user = '$_POST[username]' AND pass ='$_POST[password]' AND sperre ='1'");
$result = mysql_num_rows($query);
$result_n = mysql_num_rows($n_active);
$result_sperr = mysql_num_rows($sperr);
if ($result_n > 0)
{
?>
<html>
<head>
<link rel=stylesheet href="style.css" type=text/css>
</head>
<body bgcolor=#000000>
<font class=text>Login nicht möglich. Bitte aktivieren Sie ihren Account mit Hilfe der eMail, die Sie zugeschickt bekommen haben!</font>
</body>
</html>
<?
exit;
}
if ($result_sperr > 0)
{
?>
<html>
<head>
<link rel=stylesheet href="style.css" type=text/css>
</head>
<body bgcolor=#000000>
<font class=text><b>Login nicht möglich. Sie wurden vom Administrator des Spiels gesperrt.</b><br>
</font>
</body>
</html>
<?
exit;
}
if ($result > 0) {
$login = true;
$datenrichtig = true;
} else {
$login = false;
$datenrichtig = false;
}
$user=mysql_query("SELECT * FROM game_user WHERE user='$_POST[username]'");
$u=mysql_fetch_assoc($user);
$username=$u[user];
session_register ("login", "username");
if ($datenrichtig)
{
$s_name = session_name();
$s_id = session_id();
header ("Location: admin.php?$s_name=$s_id");
}
else
{
header ("Location: login.php?show=wrongpwd&$s_name=$s_id");
}
}
?>
das war das login script an sich und nun kommt das script was immer am kopf jeder seite steht und übrerprüft:
PHP-Code:
<?php
session_start();
if (!isset($_SESSION['login']))
{
header("Location: login.php?show=accessdenied");
exit;
}
?>
Wo liegt hier das Problem? liegt es vllt. am logout?
PHP-Code:
if ($show == 'logout')
{
session_unregister ('login');
session_destroy();
?>
<meta http-equiv="refresh" content="1;url=login.php">
<html>
<head>
<link rel=stylesheet href="style.css" type=text/css>
</head>
<body bgcolor=#000000>
<font class=text>Sie haben sich soeben erfolgreich ausgelogged!<br><a href=login.php>zurück zum Login</a></font>
</body>
</html>
<?
}
Danke!