使用烧瓶,我试图验证cookie是否未被篡改。现在,如果我更改cookie值,它只会抛出一个错误,但是我想检查代码is_valid(session ['user_id']),如果没有,则重定向/重置。

#pocoo中的某人说:


  
  实际上,您可以调用SecureCookie.unserialize并捕获异常
  啊,它默默地失败了
  看起来您必须尝试反序列化它,并检查是否从中获得空对象
  


谁能进一步解释这段代码的样子?

最佳答案

https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/contrib/securecookie.py#L265

safe_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/

10-09 23:13