【问题标题】:How to verify cookie integrity using Flask?如何使用 Flask 验证 cookie 的完整性?
【发布时间】:2012-05-25 15:40:49
【问题描述】:

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

#pocoo 中有人说:

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

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

【问题讨论】:

    标签: python cookies flask


    【解决方案1】:

    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)
    

    如果有datacookie不包含任何数据,则反序列化失败。许多原因之一是safe_str_cmp()(在unserialize() 中调用)返回了False。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 2014-07-06
      • 1970-01-01
      • 2015-10-09
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2015-09-29
      相关资源
      最近更新 更多