7

我正在构建一个 RESTful 应用程序。我计划使用 OpenID 进行用户身份验证。目前,我正在使用LightOpenID进行 OpenID 身份验证,并且能够对我的用户进行身份验证。

我的问题是下一步是什么?认证后!

  1. 由于它是一个 REST 应用程序,我将不得不使用 Cookie 进行会话管理。对吗?
  2. 我在 Cookie 中存储了哪些值?
  3. 如何验证会话和用户注销?

我确实搜索了有关实现的示例,但是所有示例都停留在身份验证上,并且不谈论会话管理!我想知道您如何管理应用程序中的会话,以及实施方法中的最佳实践和关注点(如果可能)。

如果您知道任何参考实现,请提供链接。

4

1 回答 1

14

重要的:

首先,您应该记住一些重要的安全建议:

你的问题:

由于它是一个 REST 应用程序,我将不得不使用 Cookie 进行会话管理。对吗?

使用会话将是最安全的(最好的),但当然还有更多的会话管理解决方案。但是如果你只使用 cookie(没有 php $_SESSION)那么你当然应该加密你的 cookie。但我建议你只使用 $_SESSION。

我在 Cookie 中存储了哪些值?

您不会在 cookie 中存储任何内容。$_SESSION为您创建独特的 cookie(自动 => 您不必考虑它)。您放入的所有内容都$_SESSION存储在服务器上,因此用户无法阅读。您可以在会话中存储您喜欢存储的任何信息,但请记住,最好不要在您的应用程序中存储敏感数据(密码、信用卡、密码等)。我已经暗示您的 $_SESSION 存储在服务器上,但是可以猜测(欺骗)具有唯一标识符以与存储在磁盘(或数据库)上的会话匹配的 cookie 。

如何验证会话?

您通过检查存储在会话中的信息来验证会话。我假设您至少$_SESSION['id'] = $openid->identity;在会话中存储。请记住,在用户使用 openid 登录您的网站后,您应该重新生成 session(id)以防止session fixation

如何注销用户?

您只需调用session_destroy,会话中存储的所有数据都将被删除。


我希望这能解释你所有的问题。

PS:

cookie jar 中的会话为您提供了会话的基本介绍(尽管我没有看到它提到会话固定:$)。

于 2011-02-01T09:20:37.727 回答