【问题标题】:How Store a Cookie of a Hashed Password in Tornado?如何在 Tornado 中存储散列密码的 Cookie?
【发布时间】:2014-01-02 22:12:01
【问题描述】:

所以我正在开发 Tornado 的登录系统。我最初尝试使用 websockets(不起作用)并切换到常规 Web 服务器。我正在尝试设置一个 cookie,以便我可以记住是否有人登录了 websocket。即将出现的问题是一个

ValuError: cookie 无效

我查看了 Tornado 源代码 (http://www.tornadoweb.org/en/branch2.0/_modules/tornado/web.html),这是由于匹配 0x00 和 0x20 之间的任何字符的正则表达式引起的

if re.search(r"[\x00-\x20]", name + value):
    # Don't let us accidentally inject bad stuff
    raise ValueError("Invalid cookie %r: %r" % (name, value))

问题是,我总是会有这些字符,因为哈希会生成随机字节。有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: cookies hash tornado


    【解决方案1】:

    检查实际上不够严格; cookie 中可以包含的内容有很多限制。通常,如果您想将任意二进制数据放入 cookie 中,则必须对其进行编码(例如在 base64 中)。如果您使用 tornado 的 secure_cookie 函数,它们会为您对数据进行 base64 编码。

    还请注意,将密码哈希存储在 cookie 中并不是一个好主意 - 最佳做法是生成一个随机会话 id,该 id 存储在服务器端的某处并将其放入 cookie 中。

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 2011-01-22
      • 1970-01-01
      • 2013-07-25
      • 2017-09-25
      • 2018-08-24
      • 2011-01-20
      • 1970-01-01
      • 2015-04-22
      相关资源
      最近更新 更多