php使用会话或cookie进行用户授权

时间:2011-04-02 18:10:57

标签: php session-cookies

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

如果您无法对数据进行实际加密,并且数据存在风险,以致 受到保护而无法窥探,那么您不应该将其发送到Cookie中。 或者您的整个网站应通过SSL提供。或两者兼而有之。

但让我们了解问题:

如果您只是想确定当前用户是否已登录,那么会话就是梦幻般的选择。很难让他们工作。

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

请务必对其进行设置,以便相同的用户可以登录到其他计算机,而无需将其他计算机记录下来。那太糟糕了。

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