Seite 1 von 1

[django] Daten sichern im client cookie speichern...

Verfasst: Mittwoch 25. August 2010, 11:02
von jens
Was haltet ihr von django_tools/utils/client_storage.py -> http://github.com/jedie/django-tools/co ... 012eb9bc0b ?

Es geht darum, das man damit sicher gehen kann, das zurück erhaltene Cookie Daten nicht auf dem Client verändert wurden.

Das ganze ist allerdings nur dann zuverlässig, wenn settings.SECRET_KEY auch wirklich mit zufälligen, geheimen Daten gefüllt ist.

Bsp code:

Code: Alles auswählen

from django_tools.utils.client_storage import ClientCookieStorage

def view1(request):
    response = HttpResponse("Hello World!")
    c = ClientCookieStorage(cookie_key="my_key")
    response = c.save_data(my_data_string, response)
    return response

def view2(request):
    c = ClientCookieStorage(cookie_key="my_key")
    data = c.get_data(request)
    if data is not None:
       ...do something...

Ich habe es dazu genutzt, um "Username", "Email" und "Homepage url" beim einem Anonymen Kommentar auf dem Client speichern und das nächste mal wieder verwenden kann...

Wer ein github Account hat, natürlich Code Kommentare direkt dort abgeben ;)

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Samstag 28. August 2010, 21:25
von sma
Gemäß der Regel, Algorithmen nicht selbst zu erfinden, für die es Standardlösungen gibt, wäre meine Empfehlung, einen HMac zu benutzen, eine der (zu) wenigen Crypto-Funktionen, die Python direkt unterstützt.

Stefan

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Sonntag 29. August 2010, 07:57
von jens
Gute Idee. Ich hab es mir mal notiert...

Doch ich sollte auch mal nachsehen, was django.messages macht. Denn da wird auch etwas per cookie sicher gespeichert, glaube ich...

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Dienstag 24. April 2012, 16:33
von jens

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Dienstag 24. April 2012, 17:57
von /me
jens hat geschrieben:TODO: ich sollte https://docs.djangoproject.com/en/1.4/topics/signing/ nutzten ;)
Die Änderungen in Django1.4 hatte ich mir noch gar nicht angesehen. Es scheint, als würde es Zeit dafür.

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Freitag 27. April 2012, 10:35
von Leonidas
Ist das nicht das gleiche was mitsuhiko schon vor Jahren als Secure-Cookie implementiert hat?

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Freitag 27. April 2012, 13:39
von DasIch
Ja.

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Donnerstag 3. Mai 2012, 09:03
von jens
So, mit django-tools v0.23 wird auf django.core.signing zurück gegriffen: https://github.com/jedie/django-tools/c ... d09d204a50
Genauer gesagt nutzte ich signing.dumps() und signing.loads()...

Kann dann so aussehen:

Code: Alles auswählen

from django_tools.utils.client_storage import ClientCookieStorageError, ClientCookieStorage

def view1(request):
    response = HttpResponse("Hello World!")
    c = ClientCookieStorage(cookie_key="my_key", max_age=60)
    response = c.save_data(my_data, response)
    return response

def view2(request):
    c = ClientCookieStorage(cookie_key="my_key", max_age=60)
    try:
        data = c.get_data(request)
    except ClientCookieStorageError, err:
        #...cookie missing or outdated or wrong data...
    else:
        #...do something with the data...

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Donnerstag 10. Mai 2012, 10:40
von apollo13
Ich seh den Sinn dahinter noch nicht ganz, django kann das OOTB selber auch...

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Donnerstag 10. Mai 2012, 11:41
von jens
apollo13 hat geschrieben:Ich seh den Sinn dahinter noch nicht ganz, django kann das OOTB selber auch...
Wenn das so ist, sehe ich den Sinn darin auch nicht ;)

Ist das eines der neuen Feature von 1.4 die ich noch nicht kenne? Hab mir eh noch nicht alles angesehen, sondern erstmal geschaut, das alles mit 1.4 läuft...

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Donnerstag 10. Mai 2012, 13:30
von apollo13
https://docs.djangoproject.com/en/dev/t ... d-sessions ;)

Klar es ist jetzt auf die Session bezogen, aber das reicht im Normalfall denk ich...

Re: [django] Daten sichern im client cookie speichern...

Verfasst: Donnerstag 10. Mai 2012, 13:35
von jens
Also wofür ich den Kram überhaupt z.Z. Nutzte: Wenn ein Anonymous User bei mit einen Kommentar abgibt, wird im Cookie der angegebene Username/Email usw. gespeichert und beim nächsten mal wieder verwendet. Das ist alles...

Nicht wirklich sicherheitsrelevant und eigentlich auch nur ein nice-to-have gimmick...

Die von dir angegebene Stelle scheint mir so, das man damit generell alle Session Daten als Cookies hinterlegen kann. Das ist schon etwas anderes...