2013-04-30 141 views
0

我正在构建一个简单的Web应用程序,我想使用会话来保持用户登录..我已经搜索了很长时间来找出我应该使用哪些变量保存在一个会话,以保持用户登录..我应该不保存哪些变量,为什么我应该这样做..我有我所有的会话在memcacheD(注意它是用'D')..PHP哪些变量保存在会话中 - 哪些不保存

也我一直在寻找一本电子书,告诉我如何建立一个基于会话的安全环境..我一直在观看Facebook保存的变量,但我似乎无法弄清楚他们正在使用它们(显然这是他们想要什么,否则它不会那么安全)。

+0

这可能会帮助你http://stackoverflow.com/questions/77960/what-to-put-in-a-session-variable – 2013-04-30 09:53:33

回答

0

基本会话用于存储您的逻辑实体。不要存储大量的数据。保留真正重要的数据,以及可用于检索其他相关信息的数据。例如,您可以在会话中存储user_id或用户名,并使用它来检索用户相关信息。

如果使用电子商务网站您可以在cart_id等会话中存储购物车相关数据。

不存储:

你不应该存储信用卡号码等或任何其他支付细节安全信息。同时存储用户密码或其他相关凭证不应保留在会话中。

对于Facebook,他们基本上使用oAuth标准,这些标准依次具有访问用户相关信息的标记化方法。目前它们是非常安全和流行的认证模式。

+0

是否足够安全,只需要保存用户名?我的意思是......他们在webapp中的活动状态期间无法操纵会话? – Anders 2013-04-30 09:58:29

+0

对于他们来说意味着用户还是黑客? – 2013-04-30 10:02:08

+0

如果有人入侵它,我无论如何都注定要失败,但我的意思是,如果用户名足够了?如果我想从SQL中检索数据 - 我可以简单地依赖于它们在登录时我不需要验证它们是否仍然是它们?没有必要在一段时间内比较他们的密码和用户名? – Anders 2013-04-30 10:05:03

1

你不能真正知道Facebook存储的究竟是什么。
您只能看到存储在您的Cookie中的所有内容。
在大多数情况下,cookies只接收会话ID,会话本身存储在服务器上,在你的情况下 - memcached。
您可以在页面请求之间存储您需要的任何内容。登录用户的ID,可能是一些购物车数据等

+0

他们的登录数据的加密值是否太愚蠢(e-邮件,密码),并在一段时间内检查这些数据或什么? – Anders 2013-04-30 09:56:50

+0

您为什么要将密码传回客户端?通过cookie加密的会话数据也被使用,但只有当你确定你不会传递大量的数据,只有用户ID,上次阅读文章,登录前页面等 – Tigra 2013-04-30 10:03:24