• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Session Cookie Lifetime

Bei jedem Seitenaufruf;)
Ich mache es wie bdt600 vorschlägt. Normal musst ja in jeder Seite ein session_start() haben. Ich habe aber statt dessen ein Script session_init.php, dass noch ein wenig mehr macht. Das script include ich in jeder Seite.

Was ist denn bei einem Chat oder so? Da wird ja die Seite nicht neu geladen...
Ja da hast du recht, Chats basieren auf Ajax (Browser ist aktiv und fragt Server) oder auf Web Sockets (Server ist aktiv und informiert Browser).
 
Werbung:
Ich habe mal eine Frage...
Ich möchte zuerstmal eine Remember Me Function und eine Keep Me Logged In Function erstellen.

Ansich bekomme ich das schon hin und Frau Google spuckt auch gute Antworten aus, allerdings habe ich dennoch zwei Fragen.
1. Was passiert, wenn man "immer" eingeloggt bleibt, aber das Passwort geändert wird? (mir ist bewusst, dass erstmal nichts passiert aber wie kann ich das abfangen und wo?)
2. Bei der Erinnere dich an mich Funktion ist das denke ich unproblematischer, da das Passwort ja eh immer nachgeprüft wird, oder?
 
Werbung:
Wo ist das Problem, ich sehe das nicht? Wenn der Benutzer Logged In ist und das Passwort ändert, dann bleibt er halt Logged In. Wenn er sich abmeldet muss er halt beim nächsten Mal das neue Passwort eingeben. Du musst dir ja nur die Session (User-ID) merken, aber nicht sein Passwort. Das Passwort solltest du eh nicht kennen, sondern nur einen Hash oder Verschlüsselt ohne Möglichkeit der Entschlüsselung.
 
Sry, hab ich missverständlich geschrieben...

Stell dir vor ich bin am PC und am Handy eingeloggt und beides steht auf "Eingeloggt bleiben".
Was passiert dann bitte, wenn ich beim Handy das Passwort änder? Dann mussja der Benutzer am PC rausgeworfen werde.
Meine Idee war (sofern Eingeloggt bleiben aktiviert ist) bei jedem Seiten-Refresh zu prüfen, ob das Passwort noch richtig ist. Geht das?
 
bei jedem Seiten-Refresh zu prüfen, ob das Passwort noch richtig ist. Geht das?
Klar geht das, wenn du dir das Passwort vom Einloggen in $_SESSION merkst und dann bei jeder Gelegenheit die gleiche Prüfung machst wie beim Login. Du könntest die auch die Login-Time merken und die mit der Last-Password-Change-Time vergleichen. Aber das heißt, jede Aktion greift auf die DB zu, es sei denn du schreibst so etwas wie einen in Memory Password Cache :).

Die Frage ist, ob du 2 Logins gleichzeitig erlauben willst. Ich habe schon Systeme erlebt, die werfen den angemeldeten Benutzer raus, wenn der sich nochmals anmeldet.
 
Werbung:
Ja, 2 Logins gleichzeitig sind schon ok und auch gut finde ich.

Ich hab nochmal eine Frage zu dem Erinner dich an mich...
Hier auf der Website ist es ja so, dass sowas vom Browser aufploppt wo dann steht "Willst du das Passwort speichern" und das ist dann quasi die "Erinner dich an mich Funktion"

Allerdings kommt bei meinem Login-Formular sowas nicht, hast du eine Ahnung wieso das nicht kommt oder was ich dafür tun muss?
 
Kann nur vermuten, das hängt mit dem Feldnamen oder Typ zusammen. Ich habe zum Test ein Formular mit vielen Feldern unter http://php.netaktiv.de/index.php?page=formtest, und da kommt diese Frage auch immer. Das Feld hat Namen und Type Passwort, hier der Code
Code:
<label for="Passwort">Passwort:</label>
<input name="Passwort" id="Passwort" placeholder="Bitte Passwort eingeben" type="password"/>
Ich nehme an der type="password" ist ausschlaggebend.
 
PHP:
<form action="" method="post">
            <ul class="login">
                <li>
                    Username / Email-Addresse:<br>
                    <input type="text" <?php if(isset($_POST['username'])) {  ?> value='<?php echo trim($_POST['username']) ?>' <?php } elseif(isset($_COOKIE['givenUserName'])) { ?> value='<?php echo trim($_COOKIE['givenUserName']) ?>' <?php } ?> name="username">
                </li>
                <li>
                    Passwort:<br>
                    <input type="password" name="password">
                </li>
                <li>
                    <input type="submit" value="Einloggen">
                </li>
                <li>
                    <a href="index.php?section=register">Registrieren</a>
                </li>
                <li>
                    Ich habe meinen <a href="index.php?section=recover&mode=username">Username</a> oder mein <a href="index.php?section=recover&mode=password">Passwort</a> vergessen!
                </li>
            </ul>
        </form>


Ich hab das Formular und da wird mir die Möglichkeit nicht angezeigt ._.


EDIT:
Das Fenster dafür ploppt nur nicht auf, rechts oben in der Ecke (Chrome) kann ich es 'manuell' speichern lassen
 
Werbung:
Ein Passwort in einer Session oder einem Cookie zu speichern, halte ich für keine gute Idee.
 
Werbung:
Natürlich verschlüssel ich das Passwort im Cookie bzw in der Session gut :)
Ich würde es (auch verschlüsselt) auf dem Server lassen und nicht bei jedem Request über die Leitung senden. Und du musst es natürlich auch beim Login und Ändern verschlüsseln, also https:// statt einfaches http:// zu verwenden.
 
Ich muss das aber doch über cookies laufen lassen, oder? Sonst muss ich ja bei jedem seitenrefresh ne sql-Anfrage schicken und so.
Müsste doch gehen wenn ich im Cookie die UserID verschlüsselt mit der Zeit oder so speicher...


Und wo ist der Unterschied zwischen http und https?
 
Werbung:
Sonst muss ich ja bei jedem seitenrefresh ne sql-Anfrage schicken und so.
Das musst doch so oder so, egal ob als Cookie oder im $_SESSION Array. Musst ja immer schaun, ob es noch aktuell ist, weil es eine erlaubte zweite Sitzung geändert haben könnte. Daher ja oben die Bemerkung zum In-Memory-Password-Server.

Und wo ist der Unterschied zwischen http und https?
Bei https gehen die Daten verschlüsselt über die Leitung, im WLAN kann somit niemand dein Passwort abgreifen. Deine Anwendung merkt davon nichts, das machen Browser und WebServer, wenn der das unterstützt (manche Provider wollen dafür extra Cash). Statt Port 80 verwendet https Port 443, siehe https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports
 
Probier es einfach mal statt https:// das http:// zu verwenden. Aber normalerweise steht das in den Geschäftsbedingungen und da man für https ein Zertifikat braucht, kostet das meist Geld, zumindest bei den Billig-Anbietern.

Rufe beispielsweise mal https://www.paypal.com auf, dann hast eine sicher Verbindung und kannst das Zertifikat ansehen.
 

Anhänge

  • https.jpg
    https.jpg
    22,2 KB · Aufrufe: 1
Werbung:
Geht micht...
Naja, dadurch dass es meine Spaßwebsite ist geht denke ich http auch...
Sicherheit steht nicht an erster Stelle, soll zwar sicher sein aber nicht 100% sicher... Von daher passt das schon
 
Die Unsicherheit betrifft in erster Linie deine Benutzer, deren Konten gehackt werden können oder für die, wenn sie ein Passwort auch an anderen Stellen nutzen, das auch weiterreichende Folgen haben kann.

Nachtrag: Du könntest das Passwort auch im Browser verschlüsseln http://www.golem.de/0912/71982.html, dann ginge es zumindest nicht im Klartext über die Leitung, aber das geht dann nur, wenn JavaScript aktiv ist. Das müsstest dann beim Login und Ändern machen und das verschlüsselte in der DB speicherm
 
Zurück
Oben