Mr_hEx icon

Flask Cookie encode and decode with Key !!

Mr_hEx | PRO | 07/28/21 01:33:45 AM UTC (Edited) | 0 ⭐ | 324 👁️ | Never ⏰ | []
Python |

1.72 KB

|

None

|

0 👍

/

0 👎

#https://github.com/noraj/flask-session-cookie-manager/blob/master/flask_session_cookie_manager3.py 
#python3 -m pip install flask
#python3 -m pip install itsdangerous
 
import zlib
from itsdangerous import base64_decode
import ast
from flask.sessions import SecureCookieSessionInterface
 
 
class MockApp(object):
 
    def __init__(self, secret_key):
        self.secret_key = secret_key
 
 
 
def encode(secret_key, session_cookie_structure):
 
    try:
       app = MockApp(secret_key)
 
       session_cookie_structure = dict(ast.literal_eval(session_cookie_structure))
       si = SecureCookieSessionInterface()
       s = si.get_signing_serializer(app)
 
       return s.dumps(session_cookie_structure)
    except Exception as e:
        return "[Encoding error] {}".format(e)
        raise e
 
 
def decode(session_cookie_value, secret_key=None):
    try:
        if(secret_key==None):
           compressed = False
           payload = session_cookie_value
 
           if payload.startswith('.'):
               compressed = True
               payload = payload[1:]
 
           data = payload.split(".")[0]
 
           data = base64_decode(data)
           if compressed:
               data = zlib.decompress(data)
 
           return data
        else:
             app = MockApp(secret_key)
             si = SecureCookieSessionInterface()
             s = si.get_signing_serializer(app)
 
             return s.loads(session_cookie_value)
    except Exception as e:
           return "[Decoding error] {}".format(e)
           raise e
 
SECRET_KEY =  'Sup3rUnpredictableK3yPleas3Leav3mdanfe12332942'
 
print(decode("eyJBZG1pbiI6ImFkbWluIiwidGVzdCI6W119.YL5ioA.dSRlyDjrksMaHk-aM7xuO1KjGXg",SECRET_KEY))

Comments