我为php用户授权类工作,现在我对会话和cookie感到困惑。我了解到wordpress不使用会话,我问一些php程序员,如果cookie足够安全。他们中的大多数人说:你必须使用会话来保证安全,可以修改cookie。
但是我使用hash_hmac(md5)函数和用户的ip地址,密码和cookie到期日期,没有人可以解码我的encripted cookies代码。现在我认为cookie可以和会话一样安全。 现在我想知道使用cookie是否比会话更快。我做了一些测试,发现使用cookie比使用会话更快。
但是,我仍然想知道为什么wordpress不使用会话进行身份验证过程。也许我会错过一些东西,因为我的许多编码员朋友都喜欢他们的授权程序。有人能让我知道这个问题吗?感谢。
答案 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不是优秀设计的典范,并且在工作的名义上做出了一些巨大的妥协几乎任何地方。共享主机是地狱。