Variable löschen

  • Hallo,

    ich habe ein kleines Problem beim Löschen einer Variable in PHP.
    Und zwar geht es um Folgendes:

    Nehmen wir mal an, man registriert sich z.B. in einem Forum und bekommt sein Login-Passwort dann nicht per Mail zugesandt, sondern im Browser angezeigt.

    Das heißt, man sieht es nur einmal, merkt es sich und gut ist.
    Wenn das ganze Prozedere per TLS läuft, kann man sich schön sicher sein, dass nur der Nutzer selbst das Passwort weiß.

    Aber, da gibt es ein Problem: Wenn der Nutzer jetzt nachdem er das Passwort bekommen hat, einfach fröhlich weitersurft und ihm dann einfällt, dass er mal auf's Klo muss, könnte ein Angreifer einfach im Verlauf zurückschalten und würde das Passwort zu sehen bekommen.
    Denn den Bildschirm hat unsere Testperson natürlich nicht gesperrt.

    Die Frage ist jetzt: Wie macht schafft man es, dass das Passwort bei Zurückschalten oder Neuladen nicht mehr angezeigt wird, ohne mit $_SESSION zu arbeiten.
    Denn wenn jemand Cookies ausgeschalten hat, könnte ein Angreifer evtl. im Querystring in der Adresslseite Hinweise darauf finden, wie er wieder an das verbrogende Passwort kommt.

    Es geht also schlicht darum eine Variable richtig zu löschen. Mit unset() scheint das nicht zu funktionieren und auch alle möglichen $xyz=NULL bringen nichts.

  • Wenn dein PHP-Programm fertig ist und die generierte Seite in HTML an den Benutzer geschickt wurde, hat er sie im Cache. Du hast keinen direkten Zugriff darauf, ob der Zielcomputer sich die Seite cached oder nicht. Mit HTML-Meta-Tags kannst du ihn darum bitten, aber nicht zwingen.

    Ansonsten könntest du jedem Benutzer eine Boolsche-Variable zuweisen, die speichert, ob er sein Passwort bereits gesehen hat. Nach erfolgreicher Registrierung wird das Passwort nur angezeigt, falls die Variable false ist. Und danach setzt du sie auf true. So stellst du sicher, dass dein Programm das Passwort nur einmal ausgibt, und bei späteren Aufrufen mit gleichen Parametern nie wieder. Aber das schützt nicht davor, falls der Benutzer die Seite lokal gespeichert hat.

  • Und wenn du die Seite nochmal aufrufst, wo kommt $password dann her?

    Das frag ich mich ja auch. Ich habe sogar den Cache gelert und das nochmal versucht. Da hat der immer noch $passwort ausgegeben, sowohl bei zurückschalten als auch bei Reload.

  • Ich hab das jetzt so gelöst, dass in der DB abgecheckt wird, ob es für den Nutzer schon ein Passwort gibt.
    Wenn nicht, wird es generiert und angezeigt. Wenn ja (was beim Reload oder Zurückschalten dann der Fall ist), passiert nichts. :D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!