2

在像社会网络这样的网络应用程序中,用户登录并长时间做一些工作,比如 2 小时或更长时间,现在我在会话中存储一些数据,如用户 ID(成员表中的身份号码),并通过这个 id 找到用户详细信息数据。

并且当每个用户登录到站点时,我会在会话中为该用户存储此数据 2 小时。对于这项工作,我将会话时间设置为 120 分钟,我想知道这项工作是否有效?我的意思是存储会话 2 小时。

另一方面,我可以将该 ID 存储在客户端上的加密 cookie 上,我想知道这种方式是否安全,如果用户/黑客可以解密我的 cookie 并检索用户 id(这个 id 是我的身份表 id)可以攻击我的网站和做或不做某事?

4

3 回答 3

1

在 Web 世界中,会话变量中的信息存储连接是错误的路径。您无法控制会话变量,并且可能随时丢失。

我不知道所使用的体系结构,但在 IIS 服务器上,您可以在您网站的 Web.config 文件中为身份验证 cookie 配置加密密钥

<machineKey validationKey = "AutoGenerate, IsolateApps"
             decryptionKey = "AutoGenerate, IsolateApps"
             validation = "SHA1" decryption = "Auto" />

此信息不可能在客户端被黑客入侵。

这是更好的方法

于 2013-08-23T07:31:15.547 回答
1

使用 cookie 存储标识的问题可能不是解密 cookie,而是将 cookie 整体加固。这是常见的会话和永久 cookie。

如果您不想在网站仍然在浏览器中处于活动状态时使用新登录来打扰用户,请考虑缩短会话超时时间并结合 javascript 保持活动状态(例如,每 10 分钟刷新一次页面)。否则,您在服务器上有很多不再需要的会话。

如果您想在浏览器窗口关闭的情况下保持用户登录状态。考虑在 cookie 中包含浏览器识别信息(例如,浏览器指纹识别是识别匿名用户的可行技术吗?)并具有良好的服务器加密。

不要忘记强制https。

于 2013-08-23T08:17:49.023 回答
0

不要存储在加密的 cookie 中。存储在签名的cookie 中。不一样,原因如下:

https://spring.io/blog/2014/01/20/exploiting-encrypted-cookies-for-fun-and-profit#modifying-the-decrypted-value

拥有会话的“旧”替代方案比依赖签名 cookie 的可扩展性稍差,但它应该更安全,即使像 NSA 这样的人有各种方法来绕过签名/加密。** ^ 偏执的陈述 ^ ** 但是话又说回来,如果他们有这个,他们很可能还会有中间人访问,并且各种会话将毫无意义。

于 2015-06-02T09:48:51.427 回答