使用烧瓶,我试图验证cookie是否未被篡改。现在,如果我更改cookie值,它只会抛出一个错误,但是我想检查代码is_valid(session ['user_id']),如果没有,则重定向/重置。
#pocoo中的某人说:
实际上,您可以调用SecureCookie.unserialize并捕获异常
啊,它默默地失败了
看起来您必须尝试反序列化它,并检查是否从中获得空对象
谁能进一步解释这段代码的样子?
最佳答案
看https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/contrib/securecookie.py#L265safe_str_cmp(client_hash, mac.digest())
正在执行检查,如果cookie被篡改,该检查将失败。
根据您确切想要捕获的内容,您可以跳入不同的地方。你可以做
data = request.cookies.get("session")
cookie = werkzeug.contrib.securecookie.SecureCookie.unserialize(data, secret_key)
如果存在
data
并且cookie
不包含任何数据,则反序列化失败。许多原因之一是safe_str_cmp()
(在unserialize()
中被调用)返回False。关于python - 如何使用Flask验证Cookie的完整性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10757392/