Hallo zusammen,
ich beschäftige mich aktuell mit dem Thema Flask und bin aktuell dabei mir eine kleine Seite zum testen zu erstellen, mit Login etc.
Nachdem ich jetzt auf einigen Sites gelesen habe, dass Sessions nicht für vertrauliche Dinge geeignet ist, frage ich mich ob es Sicher genug ist für den User Auth, oder ob es hier noch eine bessere/sicherere Möglichkeit gibt.
Danke & Gruß
Flask Session Sicher genug für Login?
@bBern: ich weiß nicht, was Du gelesen hast. Es ist so, dass Flask standardmäßig für Sessions die ganze Information, die Du einer Session hinzufügst, als Cookie an den Browser des Nutzers schickt. Der kann natürlich diese Information beliebig lesen und ändern. Wenn Du also in die Session session['superuser'] = False schreibst, weil der Nutzer nur eingeschränkte Rechte hat, und das an anderer Stelle prüfst, kann jeder einen Cookie erzeugen, wo session['superuser'] == True steht, und somit sich mehr Rechte erschleichen.
Informationen, die der Nutzer also nicht wissen oder ändern darf, dürfen nicht in solch einer Session gespeichert sein.
Kannst Du näher beschreiben, was Du vor hast?
Informationen, die der Nutzer also nicht wissen oder ändern darf, dürfen nicht in solch einer Session gespeichert sein.
Kannst Du näher beschreiben, was Du vor hast?
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Sirius3: Wenn man das Cookie signiert darf man auch Infos rein packen die der Benutzer zwar sehen aber nicht ändern können darf.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Nein, kann ein Nutzer nicht.Sirius3 hat geschrieben: ↑Donnerstag 16. Januar 2020, 16:29 @bBern: ich weiß nicht, was Du gelesen hast. Es ist so, dass Flask standardmäßig für Sessions die ganze Information, die Du einer Session hinzufügst, als Cookie an den Browser des Nutzers schickt. Der kann natürlich diese Information beliebig lesen und ändern.
Flask speichert die session unverschlüsselt aber in signierter Form im Cookie. Das heisst ein Nutzer kann den Inhalt sehen aber um ihn zu verändern benötigt man den Secret Key um den Cookie zu signieren. Ohne den Secret Key ist es nicht möglich den Cookie zu signieren und dass heisst das Flask den Cookie nicht akzeptiert und eine neue leere Session erstellt.
Es ist also vollkommen in Ordnung die session für Login zu benutzen und auch sowas wie superuser Status kann man in die Session packen.
@DasIch: so hätte ich auch gedacht. aber laut https://pythonhosted.org/Flask-Session/ ist das per default aus
Flask-Session ist eine separate Extension die zusätzliche SessionInterfaces bereitstellt. Der default ist genauso wie ich es beschrieben habe, siehe auch Flask's eigene Dokumentation: http://flask.palletsprojects.com/en/1.1 ... /#sessions
Der Code dafür ist auch gut lesbar: https://github.com/pallets/flask/blob/m ... #L346-L358In addition to the request object there is also a second object called session which allows you to store information specific to a user from one request to the next. This is implemented on top of cookies for you and signs the cookies cryptographically. What this means is that the user could look at the contents of your cookie but not modify it, unless they know the secret key used for signing.
Danke euch für die Antworten.
Das ist die Erkläung die mein Gewissen beruhigt, vielen Dank!DasIch hat geschrieben: ↑Donnerstag 16. Januar 2020, 16:41Nein, kann ein Nutzer nicht.Sirius3 hat geschrieben: ↑Donnerstag 16. Januar 2020, 16:29 @bBern: ich weiß nicht, was Du gelesen hast. Es ist so, dass Flask standardmäßig für Sessions die ganze Information, die Du einer Session hinzufügst, als Cookie an den Browser des Nutzers schickt. Der kann natürlich diese Information beliebig lesen und ändern.
Flask speichert die session unverschlüsselt aber in signierter Form im Cookie. Das heisst ein Nutzer kann den Inhalt sehen aber um ihn zu verändern benötigt man den Secret Key um den Cookie zu signieren. Ohne den Secret Key ist es nicht möglich den Cookie zu signieren und dass heisst das Flask den Cookie nicht akzeptiert und eine neue leere Session erstellt.
Es ist also vollkommen in Ordnung die session für Login zu benutzen und auch sowas wie superuser Status kann man in die Session packen.