summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2012-04-15 16:34:13 +0000
committerAymeric Augustin <aymeric.augustin@m4x.org>2012-04-15 16:34:13 +0000
commit5116c51b40edc37ed2e1bd68d0069321bc1f3f04 (patch)
treead47a4446481209ad6915347866f50ba20dfa47e
parent0e0102389787444f3981aea19867a9dad6a4999b (diff)
Clarified that Django randomizes session keys. Refs #11555, #13478, #18128.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17911 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--docs/topics/http/sessions.txt15
1 files changed, 10 insertions, 5 deletions
diff --git a/docs/topics/http/sessions.txt b/docs/topics/http/sessions.txt
index dcd4ea2c74..4b0bbe4ed5 100644
--- a/docs/topics/http/sessions.txt
+++ b/docs/topics/http/sessions.txt
@@ -349,19 +349,24 @@ An API is available to manipulate session data outside of a view::
>>> from django.contrib.sessions.backends.db import SessionStore
>>> import datetime
- >>> s = SessionStore(session_key='2b1189a188b44ad18c35e113ac6ceead')
+ >>> s = SessionStore()
>>> s['last_login'] = datetime.datetime(2005, 8, 20, 13, 35, 10)
+ >>> s.save()
+ >>> s.session_key
+ '2b1189a188b44ad18c35e113ac6ceead'
+
+ >>> s = SessionStore(session_key='2b1189a188b44ad18c35e113ac6ceead')
>>> s['last_login']
datetime.datetime(2005, 8, 20, 13, 35, 0)
- >>> s.save()
-If ``session_key`` isn't provided, one will be generated automatically::
+In order to prevent session fixation attacks, sessions keys that don't exist
+are regenerated::
>>> from django.contrib.sessions.backends.db import SessionStore
- >>> s = SessionStore()
+ >>> s = SessionStore(session_key='no-such-session-here')
>>> s.save()
>>> s.session_key
- '2b1189a188b44ad18c35e113ac6ceead'
+ 'ff882814010ccbc3c870523934fee5a2'
If you're using the ``django.contrib.sessions.backends.db`` backend, each
session is just a normal Django model. The ``Session`` model is defined in