2012-09-15 11 views
5

Zalogowałem się do administratora django. Kiedy otworzę firebug JS console i spróbuję wydrukować ciasteczka z document.cookie otrzymuję tylko plik cookie csrftoken. Ale po otwarciu preferencji przeglądarki Firefox> Prywatność> Usuń plik cookie ... widzę plik cookie sessionid.Dlaczego nie mogę uzyskać "sessionid" po stronie klienta?

Jak uzyskać to po stronie klienta?

Odpowiedz

9

Nie można uzyskać dostępu do pliku cookie sesji, ponieważ jest domyślnie ustawiony na HttpOnly (Można zobaczyć go za pomocą Firebug (Resources-> cookies-> kolumna sessionid na HTTP jest zaznaczone))

Kopiowanie z docs.

SESSION_COOKIE_HTTPONLY 
Default: True 

Whether to use HTTPOnly flag on the session cookie. 
If this is set to True, client-side JavaScript will not to 
be able to access the session cookie. 

można ustawić: SESSION_COOKIE_HTTPONLY = False w settings.py jeśli naprawdę chcesz mieć do niego dostęp z kodu po stronie klienta. Nie jest to jednak zalecana praktyka.

+4

Po prostu zwróć uwagę, że powodem, dla którego nie jest zalecana praktyka, jest to, że jeśli Twoja strona jest w jakiś sposób podatna na XSS, to atakujący może użyć jej do kradzieży identyfikatorów sesji. Nie jest to oczywiście możliwe, jeśli identyfikator sesji nie jest wystawiony na działanie JS. –

+0

Kolejna notka z dokumentów: "Nie ma zbytniego usprawiedliwienia, żeby to zostawić: jeśli twój kod zależy od odczytu plików cookie sesji z JavaScript, prawdopodobnie robisz to źle." – cs01

Powiązane problemy