Werkzeug Session korrekt beenden / Cookie löschen

Django, Flask, Bottle, WSGI, CGI…
Antworten
swege
User
Beiträge: 6
Registriert: Sonntag 6. Juni 2010, 15:37

Samstag 21. August 2010, 21:28

Nachdem ich das Werkzeug Tutorial (URL-Shortener) abgearbeitet (und hoffentlich halbwegs verstanden :)) habe, versuche ich hier und da etwas auszutauschen und hinzuzufügen (statt decorator für views eigene urls.py erstellt, kleinen Blog erstellt). Nun bin ich dabei ein "Login System" zu erstellen, was auch bisher ganz gut funktioniert (ebenfalls aus der Werkzeug Dokumentation geklaut).

Zum Beenden einer Session wurden allerdings nicht viele Worte verloren, das einzige was ich dazu sehe ist:
class werkzeug.contrib.sessions.SessionStore(session_class=None)
...
delete(session)
Delete a session
Entsprechend habe ich meine Anmelde- und Abmeldeviews folgendermaßen gestaltet:

Code: Alles auswählen

def login(request):
    name = error = ''
    if request.method == 'POST':
        user = User.query.filter_by(name=name).first()
        if #formular prüfkrams erfolgreich:
            request.session['uid'] = user.uid
            request.session['name'] = user.name
            return redirect('/')
    return render_template('auth/login.html', name=name, error=error)

def logout(request):
    local.session_store.delete(request.session)
    return redirect('/')
Scheint auch zu funktionieren, beim logout wird die "/tmp/werkzeug_*.sess" Datei gelöscht, aber das Cookie im Browser bleibt besteht. Dadurch erhält der Nutzer bei jedem weiteren Login auch immer die selbe Session ID, ich weiß nicht ob das der Sicherheit der Anwendung gerade zuträglich ist :?.

Ist es nicht weiter schlimm, dass das Cookie weiter besteht? Und wenn doch: Wie beende ich die Session ordnungsgemäß (und lösche das Cookie)?
Zuletzt geändert von swege am Sonntag 22. August 2010, 18:38, insgesamt 1-mal geändert.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Sonntag 22. August 2010, 16:05

Frag doch mitsuhiko im IRC-Channel direkt.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Sonntag 22. August 2010, 19:06

swege hat geschrieben:Scheint auch zu funktionieren, beim logout wird die "/tmp/werkzeug_*.sess" Datei gelöscht, aber das Cookie im Browser bleibt besteht. Dadurch erhält der Nutzer bei jedem weiteren Login auch immer die selbe Session ID, ich weiß nicht ob das der Sicherheit der Anwendung gerade zuträglich ist :?.
Das sollte kein Problem sein, das Cookie verschwindet by default ja sowieso beim schliessen des Browsers.
Ist es nicht weiter schlimm, dass das Cookie weiter besteht? Und wenn doch: Wie beende ich die Session ordnungsgemäß (und lösche das Cookie)?
Ich lass die Cookies in der Regel leben. Wenn du es loeschen willst kannst du response.delete_cookie('session') machen um es zu entfernen.
TUFKAB – the user formerly known as blackbird
swege
User
Beiträge: 6
Registriert: Sonntag 6. Juni 2010, 15:37

Montag 23. August 2010, 07:18

Vielen Dank für deine Antwort, dann habe ich mir wohl einfach nur zuviele Sorgen gemacht :)
Ich habe mir eben noch angesehen wie es bei ubuntuusers geregelt wird, dort werden scheinbar sowohl beim Login als auch beim Logout direkt hintereinander zwei Session ids vergeben, zuerst eine längere die dann durch eine kürzere ersetzt wird. Hier lesen ja einige Inyokaentwickler mit, würde mich interessieren wie und warum ihr das so umgesetzt habt.
(Übrigens bleibt die Gültigkeitsdauer des Cookies nach einem "Eingeloggt bleiben" bestehen, auch wenn man sich abmeldet und ohne die gesetzt Option wieder anmeldet. Ist das erwünscht? Kann gerade keinen Blick in euer Trac werfen, ubuntuusers ist gerade komplett offline, daher "melde" ich das vorerst hier.)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 24. August 2010, 07:52

Ich weis jetzt nicht mehr warum das so implementiert wurde, aber soweit ich weis nutzt das Inyoka zum cookie-probing. Damit kann es dir gleich sagen, ob das mit den Cookies hinhaut oder ob die deaktiviert sind.
TUFKAB – the user formerly known as blackbird
Antworten