How do I create a new clean session and invalidate the current one in Flask?
Do I use make_null_session() or open_session()?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
I do this by calling
session.clear().EDIT:
After reading your comment in another answer, I see that you’re trying to prevent a replay attack that might be made using a cookie that was issued in the past. I solved that problem as much as possible* with this approach:
save_session()callssave_cookie(), make it pass asession_expiresargument 30 minutes in the future. This causes cookies more than 30 minutes old to be considered invalid.save_session()update a session variable every so often, to make sure the cookie and itssession_expirestime get rewritten regularly. (I name this session variable ‘_refresh’ and store the current time in it, then rewrite it only if more than a few seconds have passed since the last-stored time. This optimization avoids rewriting the cookie on every HTTP request.)Duplicating Flask code in the custom
save_session()makes this approach a bit ugly and brittle, but it is necessary in order to change the arguments passed tosave_cookie(). It would be nice if Flask made this easier, or at least implemented its own safeguard against replay attacks.*WARNING: This approach by itself will not stop replay attacks that might happen during a session cookie’s valid lifetime. This fundamental problem with cookie-based sessions is discussed in RFC 6896 and A Secure Cookie Protocol by Liu, Kovacs, Huang, Gouda.