【问题标题】:php using sessions or cookies for user authorizationphp 使用会话或 cookie 进行用户授权
【发布时间】:2011-04-04 11:56:20
【问题描述】:

我为一个 php 用户授权类工作,现在我对会话和 cookie 感到困惑。我了解到 wordpress 不使用会话,并且我询问了一些 php 程序员 cookie 是否足以保证安全性。他们中的大多数人说:你必须使用会话来保证安全,cookies是可以修改的。

但是我使用 hash_hmac (md5) 函数和用户的 IP 地址、密码和 cookie 到期日期,没有人可以解码我加密的 cookie 代码。现在我认为 cookie 可以像会话一样安全。 现在我想知道使用 cookie 是否比会话更快。我做了一些测试,发现使用 cookie 比使用会话更快。

但是,我仍然想了解为什么 wordpress 不使用会话进行身份验证过程。也许我错过了一些东西,因为我的许多程序员朋友都喜欢他们两个来进行授权过程。有人会让我知道这个问题吗?谢谢。

【问题讨论】:

    标签: php session-cookies


    【解决方案1】:

    我使用 hash_hmac (md5) 函数和用户的 IP 地址、密码和 cookie 到期日期,没有人可以解码我加密的 cookie 代码

    您是否只是使用 HMAC 对 cookie 数据进行签名?听起来像。 HMAC 所做的只是证明消息没有被篡改。此外,IP 地址限制将严重刺激某些代理服务器后面的用户。

    因为 HMAC 只是一个签名,cookie 数据仍然可以读取并且完全未加密,除非您单独这样做。如果您在该 cookie 中放置了任何允许第三方以您的用户身份监控对站点的连接访问的数据(例如,用户密码的简单未加盐哈希),那么 HMAC 完全没用。

    如果您想将机密信息放入 cookie,您应该在此处使用真实加密,而不是对数据进行签名。 (阅读:两者都做。)

    如果您无法对数据执行实际加密,并且数据风险很大,必须保护它不被窥探,那么您不应该在 cookie 中发送它。 或者您的整个网站都应该通过 SSL 提供服务。或两者兼而有之。

    但让我们进入问题的核心:

    如果您想简单地确定当前用户是否已登录,那么会话是一个很棒的 选择。很难让它们工作。

    如果您想让用户登录的持续时间超过会话的长度,那么 cookie 几乎是最有效的工具。但是,您不需要(阅读:不应该)在 cookie 中存储任何有趣的信息。您可以简单地存储一些随机数据的散列,并在数据库中将其标识为属于指定用户。这是您的浏览器/IP 限制可以发挥作用的地方。当用户当前未登录时,请检查 cookie。如果它仍然有效,则设置他们的会话数据并使用新的哈希重新生成 cookie,使旧的无效。

    请务必进行设置,以便同一用户可以登录到不同的计算机,而无需将其他用户注销。真是烦死人了。

    至于为什么 Wordpress据称 避开会议......好吧,Wordpress 不是优秀设计的典范,并且以工作的名义做出了一些巨大的妥协几乎在任何地方。共享主机是地狱。

    【讨论】:

    • wordpress 不使用会话,因为在共享主机上,其他用户可以访问您的会话文件;入侵您的用户可能就像在同一台服务器上获得一个帐户一样简单。他们这样做的方式在共享环境中很容易更安全
    • @Erik,这是一个很好的观点。也就是说,我只是想知道他们为什么不选择由数据库支持的会话。
    • 感谢您的回答@Charles。我的 cookie 是这样的:USER_ID|TIMESTAMP_FOR_EXPIRING_DATE|HASH。当我创建 HASH 数据时,我使用 hash_hmac 函数,如下所示:hash_hmac('md5', USER_IDTIMESTAMP_FOR_EXPIRING_DATEBROWSER_INFORMATION*USER_PASS, SECRET_KEY(此密钥在 php 文件中定义))。当我批准用户登录时,我检查 HASH。如果 HASH 码为真,我检查 USER_ID 信息并承认登录。我认为我的 cookie 是安全的,但使用仅 cookie 存在一个问题:我不能不提醒我功能,因为我必须选择某个日期。
    猜你喜欢
    • 2023-01-26
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2013-10-06
    相关资源
    最近更新 更多