我已经使用Flask一段时间了,我真的很喜欢这个框架。我无法理解的一件事是,在几乎所有其他地方,他们都谈到在服务器上存储会话和客户端上的会话ID,然后会识别会话。然而,在使用烧瓶后,我觉得不需要这样做。将会话保存为客户端上的cookie加密服务于我的目的,并且看起来也非常安全。唯一的问题是我无法加密会话密钥,例如:
session['life'] = 'the great one'
将显示为
life='gfhjfkjdfa some encryption kj'
保存在客户端上的cookie中的。但是,如果它仍然是加密的,那将是多么重要。 我相信这里的人比我更了解事情,所以请求有人请澄清:-)
答案 0 :(得分:15)
即使您的数据已加密,用户仍可以将其cookie回滚到以前的状态(除非您开始编码一次性ID等)
e.g。 cookie说用户有100个学分,用户花费100个学分,他们得到一个新的cookie,说他们有0个学分。然后他们可以恢复以前的cookie(100个积分)。
根据您对cookie的加密方式,用户也可以删除密钥,插入虚假数据等。
答案 1 :(得分:7)
如果服务器需要会话数据,则将其存储在服务器上是有意义的。它可以减少从客户端来回发送的数据量。此外,Cookie对其可以存储的数据量有限制。
答案 2 :(得分:6)
除了上面提到的要点之外
用户可以使用浏览器设置禁用Cookie。 许多防病毒扫描程序还会扫描并标记cookie作为风险,因为这也可能导致用户计算机上不允许使用cookie。
即使在会话过程中,用户也可以删除Cookie。 (事实上,有一天,当我的PC扫描列出跟踪cookie时,我无意中做到了这一点......我只是点击了“清洁”而且它们都已经消失了)。如果用户碰巧删除了cookie,则用户状态将丢失。
如果您使用Cookie来管理整个州,则始终依赖于客户端环境及其设置。因此,如果cookie被删除/禁用等,您可能至少需要一个后退机制,以便您的应用程序正常工作。
答案 3 :(得分:1)
SecureCookie实现Flask使用不加密值。唯一可以确保的是,用户无法在不知道应用程序使用的秘密的情况下修改cookie。