【问题标题】:How does the server know the users info when using cookies? [closed]服务器在使用 cookie 时如何知道用户信息? [关闭]
【发布时间】:2011-12-29 22:09:49
【问题描述】:

假设我在用户计算机上存储了一个 cookie,当他回来时,我检查他是否有 cookie 并将他重定向到安全页面(我知道这不安全,因为 cookie 可以在计算机上伪造,但这是只是一个理论问题)

服务器如何知道所有用户信息/密码,因为我只是根据存储在计算机上的 cookie 重定向用户?

【问题讨论】:

  • 如果你做对了,你就不能伪造一个cookie......

标签: php cookies session-variables session-cookies


【解决方案1】:

您将 cookie 与存储在文件或数据库中的其他数据联系起来。

例如,cookie 可能包含一个长且难以猜测的唯一键,该键在用户登录时与users 表中的用户记录一起插入。您的代码会检查 cookie 值,然后在表中查询匹配的用户。密钥应定期更换。

您可以改为使用会话,它将 cookie 绑定到服务器上存储的文件。会话处理通常保留给持续时间较短的活动,例如在线商店的结帐流程。

PHP 可以自动化大部分会话功能。

http://www.php.net/manual/en/intro.session.php

在使用这些技术时,您需要研究安全隐患(会话劫持)。

【讨论】:

  • 2 follow up question a) 当我检查 cookie 值并在表中查询匹配用户以便我可以登录时,如果存储的密码是加盐的,我该怎么办。我不需要密码,因为我可以将用户重定向到包含所有其他信息的安全页面吗?如果我确实需要访问用户密码怎么办? b) 在安全页面上,即使我在 php 中使用 session_start,我是否应该检查是否设置了用户和 cookie 变量?只是为了确保访问安全页面的用户有会话或 cookie 集? (不希望随机的人访问安全页面)
【解决方案2】:

通常,服务器会保存所有用户会话数据的副本,并为其提供唯一 ID。 cookie 本身仅包含该 ID 的副本。当 cookie 呈现给服务器并调用 session_start 时,PHP 使用 cookie 中的 ID 来恢复正确的会话。

【讨论】:

  • 那么如果cookie在两个服务器上具有相同的名称,当它存储在用户的本地计算机上时,它如何不被覆盖?
猜你喜欢
  • 2017-02-11
  • 2018-12-29
  • 2011-11-12
  • 2017-12-07
  • 1970-01-01
  • 2018-02-23
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多