Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of using secure cookies in Django sessions?
Secure cookies ensure that session cookies are only sent over HTTPS connections, protecting session data from being intercepted on unsecured networks.
Click to reveal answer
beginner
How does Django's SESSION_COOKIE_HTTPONLY setting improve session security?
Setting SESSION_COOKIE_HTTPONLY to True prevents JavaScript from accessing the session cookie, reducing the risk of cross-site scripting (XSS) attacks stealing session data.
Click to reveal answer
intermediate
Why should session expiration be configured carefully in Django?
Proper session expiration limits the time a session remains valid, reducing the window for attackers to reuse stolen session IDs and improving overall security.
Click to reveal answer
intermediate
What is session fixation and how can Django help prevent it?
Session fixation is an attack where an attacker sets a user's session ID to a known value. Django helps prevent this by rotating the session key after login using the cycle_key() method on the session object.
Click to reveal answer
beginner
Explain the role of CSRF protection in session security within Django.
CSRF protection prevents unauthorized commands from being transmitted from a user that the web application trusts. Django includes built-in CSRF tokens that work with sessions to protect against such attacks.
Click to reveal answer
Which Django setting ensures session cookies are only sent over HTTPS?
ASESSION_EXPIRE_AT_BROWSER_CLOSE
BSESSION_COOKIE_HTTPONLY
CCSRF_COOKIE_SECURE
DSESSION_COOKIE_SECURE
✗ Incorrect
SESSION_COOKIE_SECURE makes sure cookies are sent only over HTTPS, protecting session data during transmission.
What does setting SESSION_COOKIE_HTTPONLY to True do?
APrevents JavaScript access to session cookies
BExpires session cookies immediately
CAllows cookies on all domains
DEncrypts session data in the database
✗ Incorrect
SESSION_COOKIE_HTTPONLY prevents JavaScript from reading the session cookie, reducing XSS attack risks.
How can Django help prevent session fixation attacks?
ABy using HTTP instead of HTTPS
BBy rotating the session key after login
CBy setting SESSION_COOKIE_AGE to zero
DBy disabling sessions entirely
✗ Incorrect
Django's cycle_key() method changes the session key after login to prevent attackers from fixing a session ID.
Why is it important to set session expiration in Django?
ATo limit how long a session stays valid
BTo allow unlimited session duration
CTo disable session cookies
DTo enable JavaScript access to cookies
✗ Incorrect
Setting session expiration limits the time an attacker can reuse a stolen session ID.
What role does CSRF protection play in session security?
AEncrypts session cookies
BDisables session cookies
CPrevents unauthorized commands from trusted users
DAllows cross-site requests without tokens
✗ Incorrect
CSRF protection uses tokens to ensure requests are from trusted users, protecting sessions from malicious commands.
Describe three key settings or practices in Django that help secure user sessions.
Think about cookie security, session lifetime, and login behavior.
You got /4 concepts.
Explain how session fixation attacks work and how Django defends against them.
Focus on session ID control before and after login.
You got /4 concepts.
Practice
(1/5)
1. Which Django setting helps ensure session cookies are only sent over HTTPS connections?
easy
A. SESSION_EXPIRE_AT_BROWSER_CLOSE
B. SESSION_COOKIE_HTTPONLY
C. SESSION_COOKIE_SECURE
D. SESSION_SAVE_EVERY_REQUEST
Solution
Step 1: Understand the purpose of SESSION_COOKIE_SECURE
This setting makes sure cookies are only sent over HTTPS, protecting them from being sent over insecure connections.
Step 2: Compare with other settings
SESSION_COOKIE_HTTPONLY prevents JavaScript access, SESSION_EXPIRE_AT_BROWSER_CLOSE controls expiration, and SESSION_SAVE_EVERY_REQUEST saves session on every request, none enforce HTTPS.
Final Answer:
SESSION_COOKIE_SECURE -> Option C
Quick Check:
Secure cookie = SESSION_COOKIE_SECURE [OK]
Hint: Secure cookies only with SESSION_COOKIE_SECURE [OK]
Common Mistakes:
Confusing HTTPOnly with secure flag
Thinking expiration controls HTTPS
Assuming saving every request affects security
2. Which of the following is the correct way to set a session cookie to be inaccessible to JavaScript in Django's settings?
easy
A. SESSION_COOKIE_HTTPONLY = True
B. SESSION_COOKIE_HTTPONLY = False
C. SESSION_COOKIE_SECURE = False
D. SESSION_EXPIRE_AT_BROWSER_CLOSE = False
Solution
Step 1: Identify the setting controlling JavaScript access
SESSION_COOKIE_HTTPONLY when set to True prevents JavaScript from accessing the cookie.
Step 2: Confirm correct boolean value
Setting it to True enables this protection; False would allow JavaScript access.
The session cookie is deleted, requiring login again. -> Option B
Quick Check:
Expire at close = cookie deleted [OK]
Hint: Expire at browser close deletes session cookie [OK]
Common Mistakes:
Thinking cookie persists after browser close
Confusing secure flag with expiration
Assuming HTTPOnly affects cookie lifetime
4. You want to ensure that session cookies are not accessible via JavaScript and are only sent over HTTPS. Which of the following Django settings combinations sets both security flags to False?
medium
A. SESSION_COOKIE_HTTPONLY = False and SESSION_COOKIE_SECURE = False
B. SESSION_COOKIE_HTTPONLY = False and SESSION_COOKIE_SECURE = True
C. SESSION_COOKIE_HTTPONLY = True and SESSION_COOKIE_SECURE = False
D. SESSION_COOKIE_HTTPONLY = True and SESSION_COOKIE_SECURE = True
Solution
Step 1: Identify required settings for security
To block JavaScript access, SESSION_COOKIE_HTTPONLY must be True. To send cookies only over HTTPS, SESSION_COOKIE_SECURE must be True.
Step 2: Analyze each option
SESSION_COOKIE_HTTPONLY = False and SESSION_COOKIE_SECURE = False sets both to False, allowing JavaScript access and sending cookies over HTTP, which is insecure.
Final Answer:
SESSION_COOKIE_HTTPONLY = False and SESSION_COOKIE_SECURE = False -> Option A
Quick Check:
Both flags False = insecure [OK]
Hint: Both HTTPOnly and Secure must be True for safety [OK]
Common Mistakes:
Thinking one flag alone is enough
Confusing True/False meanings
Ignoring HTTPS requirement for Secure flag
5. You want to improve session security by expiring sessions after 15 minutes of inactivity and ensuring cookies are secure and inaccessible to JavaScript. Which Django settings combination achieves this correctly?
hard
A. SESSION_COOKIE_SECURE = True, SESSION_COOKIE_HTTPONLY = True, SESSION_EXPIRE_AT_BROWSER_CLOSE = False
B. SESSION_COOKIE_SECURE = False, SESSION_COOKIE_HTTPONLY = True, SESSION_COOKIE_AGE = 900
C. SESSION_COOKIE_SECURE = True, SESSION_COOKIE_HTTPONLY = False, SESSION_COOKIE_AGE = 3600
D. SESSION_COOKIE_SECURE = True, SESSION_COOKIE_HTTPONLY = True, SESSION_COOKIE_AGE = 900
Solution
Step 1: Set secure and HTTPOnly flags
Both SESSION_COOKIE_SECURE and SESSION_COOKIE_HTTPONLY must be True to protect cookies from insecure transport and JavaScript access.
Step 2: Set session expiration time
SESSION_COOKIE_AGE controls session lifetime in seconds; 900 seconds equals 15 minutes, which matches the requirement.
Step 3: Verify other options
The combination with SESSION_EXPIRE_AT_BROWSER_CLOSE = False (without SESSION_COOKIE_AGE) does not provide a 15-minute inactivity timeout. The one with SESSION_COOKIE_SECURE = False allows transmission over HTTP. The one with SESSION_COOKIE_HTTPONLY = False and SESSION_COOKIE_AGE = 3600 permits JavaScript access and uses a 1-hour timeout.