饼干与会话

2022-08-30 06:16:27

几个月前,我开始使用PHP。为了为我的网站创建登录系统,我阅读了有关cookie和会话及其差异的信息(Cookie存储在用户的浏览器中,会话存储在服务器上)。当时,我更喜欢饼干(谁不喜欢饼干?!),只是说:“谁在乎?我没有任何好的交易将其存储在我的服务器中“,所以,我继续使用cookie进行我的单身汉毕业项目。但是,在完成我应用程序的大部分内容之后,我听说对于存储用户ID的特定情况,会话更合适。所以我开始思考,如果陪审团问我为什么你使用饼干而不是会议,我会说些什么?我就是这个原因(我不需要在内部存储有关用户的信息)。这足以作为理由吗?还是不止于此?
您能告诉我使用cookie来保存用户ID的优点/缺点吗?

感谢StackOverflow中的所有人!


答案 1

该概念是为Web访问者跨页面加载存储持久性数据。Cookie 将其直接存储在客户端上。会话使用 Cookie 作为各种键,以与存储在服务器端的数据相关联。

最好使用会话,因为实际值对客户端是隐藏的,您可以控制数据何时过期和变为无效。如果这一切都基于cookie,则用户(或黑客)可以操纵他们的cookie数据,然后播放对您的网站的请求。

编辑:我认为使用cookie没有任何好处,除了简单。这样看...用户是否有任何理由知道自己的 ID#?通常我会说不,用户不需要这些信息。提供信息应该在需要知道的基础上受到限制。如果用户将其 Cookie 更改为具有不同的 ID,您的应用程序将如何响应?这是一个安全风险。

在会议风靡一时之前,我基本上有自己的实现。我在客户端上存储了一个唯一的 Cookie 值,并将我的持久性数据与该 Cookie 值一起存储在数据库中。然后在页面请求上,我匹配这些值并拥有我的持久性数据,而不让客户端控制那是什么。


答案 2

区分这两者的基本思想。

会期:

  1. UID存储在服务器上(即服务器端)
  2. 更安全(因为1)
  3. 无法设置过期时间,当用户关闭浏览器时,会话变量将过期。(现在它在php中默认存储24分钟)

饼干:

  1. UID存储在Web浏览器(即客户端)上
  2. 不是很安全,因为黑客可以访问并获取您的信息(因为1)
  3. 可以设置过期时间(有关详细信息,请参阅 setcookies()

当您需要存储短期信息/值(例如用于计算,测量,查询等的变量)时,会话是首选。

当您需要存储长期信息/值(例如用户帐户)时,最好使用Cookie(这样即使他们关闭计算机2天,他们的帐户仍将登录)。我想不出很多cookie的例子,因为它在大多数情况下都没有被采用。


推荐