如何在龙卷风中存储哈希密码的Cookie?

时间:2014-01-02 22:12:01

标签: cookies hash tornado

所以我正在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))

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

1 个答案:

答案 0 :(得分:1)

该检查实际上并不严格;什么可以进入cookie中有很多限制。通常,如果要将任意二进制数据放入cookie中,则必须对其进行编码(例如,在base64中)。如果你使用tornado的secure_cookie函数,他们将为你编码数据。

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