人工构造Flask session模拟cookie登陆
Posted | stdout
有没有好奇为什么 Flask 配置必须要求一个 SECRET_KEY,然后就可以在浏览器保存一个 session 状态读写数据。
这里记一下它的底层实现,其实需要依赖的包是 itsdangerous
import hashlib
from itsdangerous import URLSafeTimedSerializer
URLSafeTimedSerializer(
'YOUR_SECRET_KEY', # flask SECRET_KEY
'cookie-session', # from flask.sessions.SecureCookieSessionInterface.salt
# serializer=TaggedJSONSerializer(),
signer_kwargs={'key_derivation': 'hmac', 'digest_method': hashlib.sha1}
).dumps({
"your_key": "your_value"
})
别人如果拿到你的 SECRET_KEY
就可以伪造任意 session cookie 了
Comments