Internet
Sicherheitsrisiko PHP Session ID
Posted on .In letzter Zeit treffe ich wieder vermehrt auf Internetseiten, die die Session ID in der URL übergeben. Eigentlich dachte ich dieses Konzept ist langsam ausgestorben, aber anscheinend noch nicht. In diesem Beitrag möchte ich nochmal zeigen, was passierren kann wenn man die Session ID in der URL übergibt.
Neben den Cookies ist die PHP Session ID eins der wenigen Werkzeuge, die es dem Programmierer ermöglichen festzustellen, ob ein Benutzer eingeloggt ist oder nicht. Da Cookies oftmals in den Browsern deaktiviert sind bleibt nurnoch der Griff zur Session ID. Aber warum ist das gefährlich die ID in der URL anzugeben?
Eigentlich nichts! Zumindest solange man die Internetseite nicht verlässt. Wenn man zB. in einem Forum unterwegs ist, welches die ID in der URL übergibt und dieses Forum über einen Link der in irgendeinem post verlässt sendet man an automatisch die Referrer-Seite mit. Somit weis die Seite die ihr betretet automatisch wo ihr herkommt und da die Session ID auch in der URL steckt weis die Seite auch eure Session ID. Diese wird normalerweise auch in den Seitenstatistiken gespeichert!
Das gefährliche ist daran, dass wenn jemand an diesen Referrerlink von euch kommt und diesen aufruft ist er automatisch mit eurem Benutzer in diesem Forum eingeloggt! Und die Internetseite kann auch nicht unterscheiden, wer mit der Session ID unterwegs ist, denn es können auch ubegrenzt Benutzer mit einer Session ID auf der Internetseite unterwegs sein ohne dass der „original“ Benutzer was davon mitkrigt.
Wenn ihr wisesn wollt welche Informationen von euch übertragen werden könnt ihr auf diesen link klicken und mal nachschauen.
LEider wenden immernoch sehr viele Seiten dieses Modell an. Ihr könnt es selbst ausprobieren in dem ihr bei Google einfach mal nach „inurl:phpsessionid“ oder „inurl:phpsid“ sucht. Hier ein paar traurige Beispiele:
Wie kann man sich schützen? Ganz einfach, als Programmierer sollte man die Session ID entweder per Mod Rewrite verstecken oder ein anderes Verfahren zur Benutzeranmeldung wählen. (Zu diesem Thema werde ich demnächst auch noch schreiben)
Als Benutzer sollte man sich immer vor dem Verlassen der Seite ausloggen, denn die Session ID bleibt solange gültig bis man sie Überschreibt oder löscht. Dies kann nur durch ein Logout oder durch einen erneuten Login erfolgen. Wenn man sich ausloggt, ist es auch egal, ob man vorher auf einen Link geklickt hat, denn die ID ist dann ungültig und wenn jemand dann sogar an eure ID kommt kann er damit nichts anfangen!
Wenn ihr also ne neue Internetseite erstellt auchtet darauf was ihr der öffentlichekit präsentiert, am besten so wenig wie möglich.
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.