Peter Strucks: Session - ich weiß nicht mehr weiter

Beitrag lesen

Hallo zusammen.

In den letzten Tagen wurde hier soviel über Sessions, Sicherheit und Loginsysteme diskutiert, das es den meisten hier denk ich schon langsam zum Hals raushängt. Von daher werd ich nur noch einmal jetzt eine Frage stellen. Und diesmal geht es mir mehr darum einfach mal ein Beispiel zu bekommen als darum wie Sessions funktionieren denn das weiß ich.

Wie ich bisher vorgehe(ich lasse grundlegende Sachen wie SQL Verbindung weg):

session_start();
$query="SELECT user,pwd,bereich,userid FROM all_user WHERE user='$nick'";

$num=mysql_query($query,$c) or die (mysql_error());
$row = mysql_fetch_array($num);
if(!$row){
 header('Location: fehler.php');
 die();
}
$r_name = $row["user"];
$r_pw = $row["pwd"];
$r_branche = $row["branche"];
$r_uid = $row["userid"];
$_SESSION["id"] = $r_uid;
$_SESSION["nickname"] = $r_name;
$_SESSION["bereich"] = $r_branche;
$_SESSION['IP']=$_SERVER['REMOTE_ADDR'];
header("Location: weiter.php");

So. Die Session wird gestartet und es werden 4 Variablen reingeschrieben, di eich zuvor aus einer DB hole. Dann wird auf weiter.php weitergeleitet.
// weiter.php sieht so aus:

session_start ();
if(!isset ($_SESSION["user_id"])){
 header ("Location: index.php");
 die();
}elseif($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
 header ("Location: index.php);
 die();
}

include('sql.php');
$c=mysql_connect($host,$user,$pw);
mysql_select_db('xxx',$c);
$query="SELECT user,pwd,bereich,userid FROM all_user WHERE user='$nick'";
$num=mysql_query($query,$c) or die (mysql_error());
$row = mysql_fetch_array($num);
$r_name = $row["user"];
$r_pw = $row["pwd"];
$r_branche = $row["branche"];
$r_uid = $row["userid"];

Dann vergleiche ich die Session Variablen mit den $r_x variablen.
Wenn alle gleich sind dann wird die Seite angezeigt wenn nicht wird wieder zu index.php weitergeleitet.Ich hab mir den Code gespart ist zu unübersichtlich hier.

So damit habe ch ein Session System das ziemlich unsicher ist meiner Meinung nach. Wie kann ich es nun sicherer machen wenn ich folgendes nicht will:

  • Session fälschbar

  • Session erratbar/ersniffbar

  • Angenommen ich bin eingeloggt und gebe den Link weiter, dann soll der andere sich nicht die Seite angucken ohne sich vorher eingeloggt zu haben.

  • Der User soll jedes mal eine andere Session bekommen.

  • fällt euch noch weitere Sachen ein?

Der Login is geschützt so das XSS kaum/schlecht und SQL Injektions auch nicht möglch sind es geht mir jetzt rein um die Sessions.

Mit freundlichen Grüßen

Peter Strucks

PS: Ich hoffe das sich das Thema damit entgültig hiermit erledigt hat und hoffe auf viele Antworten und Beispiele(auch Codebeispiele manchmal versteht man es dann einfach besser).
Danke.