我正在用 PHP 开发一个网站,并尝试使用 OpenID 进行登录机制。我想要类似于 StackOverflow 的行为。我的意思是,每当我打开 stackoverflow 时,我就已经登录了。我在 StackOverflow 上发现了两个相关问题:
OpenId + 记住我/保持登录状态 https://stackoverflow.com/questions/949964/openid-remember-me-staying-logged-in
使用 Twitter 登录并保持登录状态 (PHP) https://stackoverflow.com/questions/5506111/sign-in-with-twitter-and-stay-signed-in-php
我知道我应该登录用户,如果这是他/她第一次,我应该注册用户并在他/她的系统中设置 cookie。然而我想知道的是我应该在cookie中存储什么?用户名/密码组合?这似乎是一个安全问题。另一个问题是我应该在哪里检查 cookie?我希望有一个简单的教程/代码示例。谢谢。
这是使用 cookie 的基本 Web 应用程序会话管理,OpenID 起初并没有什么区别。
不,绝对不要将用户名和密码存储在 cookie 中。 Cookie 充当“不记名令牌”,这意味着拥有 Cookie 的人都可以进入。在 Cookie 中存储的最佳内容是不可猜测的任意密钥,您可以使用它在应用程序的表中查找真实信息。因此,用户会显示一个“myappsession”的 cookie 以及与您的域相关的“234871nb341adf”值。然后,您的应用程序将在本地数据存储中查找“234871nb341adf”的值,并查看它是否与有效用户绑定。您最好还检查该用户多久前在那里以及诸如此类的事情。如果它是有效会话并且在您的时间和使用限制内,则用户将自动登录。
对于来自 RP 端的额外偏执,您可以利用 OpenID 的 checkid_immediate 模式进行后台调用,以查看用户是否仍然登录到其 IdP。如果不是,那么您至少知道应该尝试将它们发送给哪个提供商进行重新验证,并且可以提供更好的用户体验。
如果您希望您的网站真正安全,您应该通过 HTTPS 进行所有会话,并将您的 cookie 标记为“安全”和“HTTPOnly”,这记录在setcookie
功能手册页:http://php.net/manual/en/function.setcookie.php http://php.net/manual/en/function.setcookie.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)