13

我已经使用 Flask 一段时间了,我真的很喜欢这个框架。我无法理解的一件事是,在几乎所有其他地方,他们都在谈论将会话存储在服务器上,并将会话 ID 存储在客户端上,然后才能识别会话。但是使用烧瓶后,我觉得没有必要这样做。以加密方式将会话保存为客户端上的 cookie 符合我的目的,并且看起来也很安全。唯一的事情是我无法加密会话密钥,例如:

session['life'] = 'the great one'

会显示为

life='gfhjfkjdfa some encryption kj'

在客户端保存的cookie中。但这有什么关系,因为它仍然是加密的。我相信这里的人比我更了解事情,所以请有人澄清:-)

4

4 回答 4

18

即使您的数据被加密,用户仍然可以将他们的 cookie 回滚到以前的状态(除非您开始编码一次性 ID 等)

例如,cookie 表示用户有 100 个积分,用户花费了 100 个积分,他们得到一个新的 cookie,表示他们有 0 个积分。然后他们可以恢复他们以前的 cookie(有 100 个积分)。

根据您加密 cookie 的方式,用户还可以删除密钥、插入虚假数据等。

于 2010-10-16T13:16:29.850 回答
8

如果服务器需要会话数据,则将其存储在服务器上是有意义的。它降低了从客户端来回发送的数据量。此外,cookie 对它们可以存储的数据量有限制。

于 2010-10-16T13:05:52.293 回答
7

除了上面已经提到的几点

  1. 用户可以使用他们的浏览器设置禁用 cookie。许多防病毒扫描程序也会扫描 cookie 并将其标记为风险,因此也可能导致用户计算机上不允许使用 cookie。

  2. 用户即使在会话过程中也可以删除 Cookie。(事实上​​,前几天我无意中这样做了,当时我的一台 PC 扫描列出了跟踪 cookie……我只是点击了“清理”,它们都不见了)。如果用户碰巧删除了 cookie,用户状态将丢失。

如果您使用 cookie 来管理整个状态,那么您始终依赖于客户端环境及其设置。因此,您可能至少需要一个备用机制,以防 cookie 被删除/禁用等,以便您的应用程序正常工作。

于 2010-10-16T13:38:42.980 回答
2

Flask 使用的 SecureCookie 实现不加密这些值。唯一要确保的是用户不能在不知道应用程序使用的秘密的情况下修改 cookie。

于 2010-10-30T08:21:34.763 回答