Bademeister: Einloggen in privaten Bereich - sicherheit??

Beitrag lesen

Hi moritz,

[...] und vergibst eine eindeutige Sitzungs-ID mit session_id

das ist i.a. unnoetig, das gechieht automatisch.

die du in eine Sitzungs-Variable speicherst:

session_start();
$_SESSION['id']=session_id();

  
Und Du vergibst auch gar keine, sondern speicherst nur die bestehende in eine Variable. Das ist in der Form auch unnoetig.  
  

> Danach mit header("location:./") ne Weiterleitung machen!  
  
Warum? Und wohin?  
  

> Auf jeder nachfolgenden Seite beginnst(!) du wieder mit session\_start(); und machst eine einfach Abfrage:  

~~~php
  

> <?php  
> session_start();  
> if($_SESSION['id']!=session_id()){  
>  die('Nicht angemeldet');  
> }  

Das fuehrt zu einem Warning, falls keine Session wiedehergestellt wurde, weil die Variable $_SESSION['id'] nicht existiert. Wenn sie doch existiert, ist sie zwingend gleich dem Rueckgabewert von session_id(). Wenn es der Kontext erfordert, dass Du abfragst, ob eine Session wiederhergestellt wurde, dann reicht es also, etwa in der Session eine Variable $_SESSION["exists"] zu setzen und diese beim Starten der Session auf Existenz zu pruefen.

Ausserdem ist das Nicht-Wiederherstellen einer Session kein Grund fuer das Skript, einfach Selbstmord zu begehen, gleich nachdem es invaliden HTML-Code zuruekgegeben hat, der lediglich aus einer haesslichen, nackten Fehlermeldung besteht. Oder?

Viele Gruesse,
der Bademeister