php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 15-12-2006, 17:13
Hirnhamster
 Registrierter Benutzer
Links : Onlinestatus : Hirnhamster ist offline
Registriert seit: Oct 2006
Beiträge: 160
Hirnhamster ist zur Zeit noch ein unbeschriebenes Blatt
Standard Session Lifetime

Hey!

Ich habe auf meiner Seite ein Login-System, dass auf Sessions basiert.
Es gibt eine zentrale index.php in die alle anderen Seiten includiert werden, deshalb steht am Anfang dieser Datei session_start, sodass es auf jeden aufgerufenen Seite am Anfang steht.

Damit die User sich nicht nach jedem Schließes des Browser und / oder nach längerer Inaktivität neu einloggen müssen, setze ich die Lifetime der Session und die des Cookies (falls der User Cookies aktiviert hat) auf ein Jahr.

PHP-Code:
    ini_set('session.cookie_lifetime'3600*24*365);
    
ini_set('session.gc_maxlifetime'3600*24*365); 
Nun ist es aber so, dass sich ja nicht jeder Nutzer, der die Seite besucht, registriert und einloggt. Die Session wird aber auf jeden Fall gestartet.
Nun habe ich mal in meinen tmp Ordner reingeschaut und darin waren Unmengen von Session-Dateien, von denen fast alle leer waren. Da ich aber die Lifetime auf ein Jahr gesetzt habe, räumt die garbage collection natürlich nicht auf.

Jetzt steh ich vor dem Problem, dass ich die Lifetime einer Session nur dann auf ein Jahr setzen will, wenn sich der User auch tatsächlich einloggt.
Da session_start auf jeden Fall am Anfang jeden Scriptes aufgerufen ist, wurde die Session ja bereits gestartet, wenn der User auch nur die Seite aufruft.

Meine Frage ist nun, ob ich das Problem irgendwie umgehen kann, also die Lifetime der Session nur dann auf ein Jahr setzen kann, wenn sich der User auch wirklich einloggt.
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 15-12-2006, 18:19
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Session Lifetime

Ich würde ein vernünftiges Auto-Login-System implementieren, d.h. du speicherst im Cookie (dessen Laufzeit du beliebig festlegen kannst) einen String, anhand dessen du in der Datenbank den User finden kannst, und wenn der Cookie gesetzt ist, loggst du den User beim Betreten der Website ein. Und die beiden ini_set-Zeilen wieder raus

Ist zwar eine hübsche Idee die Session aktiv zu lassen, aber nicht wirklich hübsch praktikabel
Mit Zitat antworten
  #3 (permalink)  
Alt 15-12-2006, 18:59
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: Session Lifetime

Zitat:
Original geschrieben von ghostgambler
d.h. du speicherst im Cookie einen String, anhand dessen du in der Datenbank den User finden kannst
sorry, dass ich mich jetzt einklinke.
aber wie wird soetwas allgemein gehandhabt? also was bedeutet in diesem fall "String" - wie setzt der sich zusammen bzw. wie wird er generiert?
Mit Zitat antworten
  #4 (permalink)  
Alt 16-12-2006, 01:28
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP-Code:
$string md5('Salz und '.rand()); 
Sowas reicht meist als Markierung.
Ist im Grunde auch egal, Hauptsache eindeutig und
schwer zu erraten.

Geändert von combie (16-12-2006 um 01:34 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 16-12-2006, 02:24
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von combie
Sowas reicht meist als Markierung.
Ist im Grunde auch egal, Hauptsache eindeutig und
schwer zu erraten.
ja klar, passwörter kann man "salzen", aber man muss später auch aus dem cookie-"String" auf einen konkreten account schließen können.
selbst "gesalzte" passwörter können doppelt vorkommen (theoretisch).

ich glaube, ich hab's:
md5-(password mit username als salt) und im cookie noch den username und/oder user_id hinterlegen.
müsste passen - oder?
Mit Zitat antworten
  #6 (permalink)  
Alt 16-12-2006, 02:37
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Der username sollte nicht im Cookie gespeichert werden..!
Das mit dem Salz ist auch relativ unwichtig..
Es dient nur dazu, den md5 String schwerer "vorauszusagen"
du brauchst halt irgendwas, was zufällig genug ist..

So...
Du hast sowieso eine usertabelle mit
ID | nick | email | passwort | usw

Du brauchst zusätzlich eine Tabelle: dauerlogin
dauerloginkey | userid | timestamp

Im Cookie speicherst du dann den dauerloginkey
Damit die Tabelle nicht aus dem Ruder läuft,
solltest du regelmäßig veraltete Einträge löschen.
Wenn dauerloginkey unique-index gesetzt ist, hat sich das
mit den Doppelvergaben auch erledigt..

Geändert von combie (16-12-2006 um 02:49 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 16-12-2006, 03:05
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, db-spalte, dachte ich mir schon.

Zitat:
Original geschrieben von combie
Der username sollte nicht im Cookie gespeichert werden..!
weil du schon mit dem ausrufezeichen ausdrücken möchtest, dass es potentiell unsicher ist (in diesem fall den benutzernamen zu speichern):

ich frage mich, ob man überhaupt einen auto-login zulassen sollte?
die sicherheitslücke internetcafe fällt mir da z.b. spontan ein, ein klick auf [] automatisch einloggen (bild-leser, und nicht nur diese, klicken auf alles mögliche) und alle nachfolger haben zugriff auf meinen account - toll.
Mit Zitat antworten
  #8 (permalink)  
Alt 16-12-2006, 11:52
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wenn der User im Internetcafe dieses Häkchen setzt, ist er selber Schuld..

Aber du hast Recht!
Man sollte das Autologin keinesfalls zum Standard erheben..!!

Geändert von combie (16-12-2006 um 11:57 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 16-12-2006, 21:03
Hirnhamster
 Registrierter Benutzer
Links : Onlinestatus : Hirnhamster ist offline
Registriert seit: Oct 2006
Beiträge: 160
Hirnhamster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja Problem ist, dass ich die Daten der Session weiterhin brauche, da dort nich nur Username und Rechte drin stehen.

ich hab's jetzt so gelöst, dass ich das Sessions System selbständig über eine DB verwalte. Damit hab ich ne bessere Kontrolle über die Lifetime der Session und kann sie für den Benutzer einzeln beliebig anpassen.

Grundlage war dieses Tutorial
Mit Zitat antworten
  #10 (permalink)  
Alt 17-12-2006, 12:34
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ein klares Wort?

Ja dann: Ich halte nix davon !!
1. Du versuchst Sessions für irgendwas zu missbrauchen, wofür sie nicht gedacht sind
2. nicht auf jedem System darfst du einen eigenen Session Handler stetzen
4. nur kurzlebige Daten in Session halten!
3. Langfristige Datenhaltung sollte in der DB stattfinden
Mit Zitat antworten
  #11 (permalink)  
Alt 17-12-2006, 16:22
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von combie
1. Du versuchst Sessions für irgendwas zu missbrauchen, wofür sie nicht gedacht sind
Steht wo?

Zitat:
2. nicht auf jedem System darfst du einen eigenen Session Handler stetzen
Wüsste nicht wieso das nicht erlaubt sein sollte. Wenn der Hoster die Funktion deaktiviert hat -> Hoster wechseln

Zitat:
4. nur kurzlebige Daten in Session halten!
3. Langfristige Datenhaltung sollte in der DB stattfinden
Wieso?

Es ist nicht die übliche Verwendung von Sessions, aber ob jetzt ein session-cookie/session oder ein autolog-cookie/der entsprechende Datensatz, auf dem Server "offen" verbleibt, dürfte ziemlich Jacke wie Hose sein ... zumindest bin ich nach 2 Tagen überlegen über diesen Thread zu dem Schluss gekommen
Mit Zitat antworten
  #12 (permalink)  
Alt 17-12-2006, 19:52
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Je länger die Sessions halten, desto mehr offene Sessions werden gehalten..
Je mehr offene Sessions, desto größer die Chance zur versehndlichen Übernahme..

Bei einer Lebenzeit von min 24 Minuten(Standard) ist die Wahrscheinlichkeit geringer, als wenn man das auf 1 Jahr ausdehnt...

Klar könnte man einen fürchterlichen Bug im Konzept, dadurch versuchen auszubügeln, daß man die Sessionverwaltung aufbläht...

Teil der Grundidee von Sitzungen, ist es ja gerade, daß diese auch mal enden.. und das Schließen des Browsers, ist doch der passende Zeitpunkt, warum davon abweichen und dieses wunderschöne Konzept unterlaufen..?
Wenn es dem Esel zu gut geht, dann geht er aufs Glatteis

Ps:
Ich halte nicht viel von Autologin Systemen, bequem, Ja, das ist auch schon das schönste daran..

Geändert von combie (17-12-2006 um 20:03 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 17-12-2006, 20:14
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von combie
Je länger die Sessions halten, desto mehr offene Sessions werden gehalten..
Je mehr offene Sessions, desto größer die Chance zur versehndlichen Übernahme..
Das gleiche Problem hat man bei der Auto-Login-ID auch, ist also das gleich in grün
Mit Zitat antworten
  #14 (permalink)  
Alt 17-12-2006, 20:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Genau!
Ein riesen Sicherheitsloch!
Aber das kann man auch haben, ohne das arme Sessionhandlig umzukrempeln
Mit Zitat antworten
  #15 (permalink)  
Alt 17-12-2006, 21:17
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von combie
Genau!
Ein riesen Sicherheitsloch!
Aber das kann man auch haben, ohne das arme Sessionhandlig umzukrempeln
Du glaubst also, dass ein 32^16 Zufallswert ein riesen Sicherheitsloch ist?
Ich finde das für reines BruteForce schon zu zeitaufwendig...
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/79310-session-lifetime.html
Erstellt von For Type Datum
MetaGer, Suche nach: session lifetime This thread Refback 15-07-2013 20:57

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:35 Uhr.