hi,
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.
*meld*
Und zwar nicht nur ob der Häufigkeit des Auftauchens dieses Themas - sondern noch viel mehr, weil von denen, die hier danach fragen, wie sie etwas "sicherer" machen, sich offenbar nur die wenigsten vorher mal gefragt haben, wo denn überhaupt die _Lücken_ ihres bisherigen Aufbaus liegen könnten. Wer diese mal analysiert, dürfte idR. auch schon sehr nahe an ihrer Abstellung und Behebung sein.
Das schließt natürlich auch bei gewissenhaftester Betrachtung nicht aus, dass man etwas übersieht, und davor ist auch kein "Profi" gefeit (und ein solcher würde sowas auch sicher nicht annehmen).
Deshalb mal nach dem Prinzip "vier Augen sehen mehr als zwei" anzufragen, ist vollkommen OK.
Nur das übliche "wie mach ich X sicher(er)?" offenbar mit wenig vorausgehenden Einsatz eigenen Gehirnschmalzes nervt.
Nimm das bitte nicht persönlich, es ist nicht speziell auf deinen Thread bezogen.
session_start();
$query="SELECT user,pwd,bereich,userid FROM all_user WHERE user='$nick'";
Woher kommt $nick?
Hier hast du die erste Lücke, wenn du einen von extern kommenden Wert nicht absicherst.
$num=mysql_query($query,$c) or die (mysql_error());
$row = mysql_fetch_array($num);
if(!$row){
header('Location: fehler.php');
die();
Abgesehen davon, dass ein Location-Header per Definition einen absoluten URL inkl. Protokollangabe erfordert -
Warum eigentlich immer Umleiten?
Warum nicht die Fehlermeldung innerhalb der gleichen Ressource ausgeben?
So. Die Session wird gestartet und es werden 4 Variablen reingeschrieben, di eich zuvor aus einer DB hole. Dann wird auf weiter.php weitergeleitet.
Warum wieder Umleiten ...?
// weiter.php sieht so aus:
session_start ();
if(!isset ($_SESSION["user_id"])){
header ("Location: index.php");
die();
Warum wieder Umleiten ...?
}elseif($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
Ungut.
Dass die IP zwischen mehreren Requests des Nutzers nicht zwangsläufig gleich bleiben muss, wurde schon oft erwähnt - AOL bspw. hat eine ganze Proxyfarm, über die es die Anfragen seiner Nutzer weiterleitet.
$query="SELECT user,pwd,bereich,userid FROM all_user WHERE user='$nick'";
Dieser $nick schon wieder - wer ist der Kerl, und woher kommt er?
register_globals eigentlich ein Begriff, falls das eine Formularübergabe sein soll?
Dann vergleiche ich die Session Variablen mit den $r_x variablen.
Warum denn schon wieder?
Du hast sie auf der vorherigen Seite doch erst in die Session reingeschrieben?
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }