Php 多平台WebApp的良好用户管理实践是什么

Php 多平台WebApp的良好用户管理实践是什么,php,mysql,security,user-management,Php,Mysql,Security,User Management,我想听听您对健壮框架/代码(RoR、Zend、Symfony、Django..)使用什么的建议 我使用一个简单的et微型框架(userCake)来管理我的用户管理系统(理解:登录、注销、是否用户登录、用户id、用户名等)。我正在重构我的代码,为iPhone/Androi/Js使用API,我想刷新这段代码。我需要知道我是否只是重新安排我的类、依赖项、类并保持相同的过程,或者是否需要更改某些内容 当前播放状态 在用户成功登录之后,我检索他的所有数据,序列化它,创建一个sessionID。我将此ses

我想听听您对健壮框架/代码(RoR、Zend、Symfony、Django..)使用什么的建议

我使用一个简单的et微型框架(userCake)来管理我的用户管理系统(理解:登录、注销、是否用户登录、用户id、用户名等)。我正在重构我的代码,为iPhone/Androi/Js使用API,我想刷新这段代码。我需要知道我是否只是重新安排我的类、依赖项、类并保持相同的过程,或者是否需要更改某些内容

当前播放状态
在用户成功登录之后,我检索他的所有数据,序列化它,创建一个sessionID。我将此sessionID存储在用户Cookie中,并将所有序列化数据存储在链接sessionID和数据的DB表上

然后,在我的网站上,每次请求页面时,我都会从数据库中检索与用户在cookie/会话中拥有的会话ID相匹配的序列化数据。然后我进行查询,以确保用户名和哈希密码在我的数据库中匹配,并且我的用户仍然处于活动状态(未被禁止或删除)。我的api也是如此(iphone、android、js必须给我sessionID)

我有一个cronjob,它从会话表中删除过期的会话表。当用户注销时,也是一样,我删除数据库中的行并清除用户Cookie

我在找什么
我上面解释的对我来说似乎很好。但它足够安全吗? 是否真的需要每次使用用户名和密码双重检查数据库是否正常,我不能只信任会话表中的序列化数据吗


在著名的框架(Django、Rails、Symfony..)中,所有这些是如何实现的?

首先:

用户成功登录后,我 检索他的所有数据,序列化它, 创建一个sessionID。我储存这个 用户Cookie中的sessionID和所有 数据库表上的序列化数据 链接sessionID和数据

当你“检索他的所有数据”时,这不是已经从数据库中获取了吗?为什么要序列化数据并将其放回数据库的另一部分?为什么不将用户id存储在会话变量中,并使用它查询您可能需要的任何用户信息

秒:

然后我提出一个问题,以确保 用户名和哈希密码 数据库中的匹配项

您从何处获得针对DB测试的每个请求的用户名和密码?听起来好像您正在测试用户,并根据数据库中的原始信息在数据库中序列化存储。如果是这样,这将始终匹配,因为这是您自己设置的

第三名:

为什么要使用cron作业删除过期的会话?会话具有内置的过期机制


通常,您希望使用指纹和/或趋势分析来保护会话。然后,您可以简单地将用户的主db键保存在会话变量中,并使用每个请求检索您可能需要的任何用户数据。此外,您不需要自己创建会话id并将其存储在cookie中。当您调用session_start()并将要保存的任何会话变量存储在$_sessionsuperglobal数组中时,PHP会为您处理此机制。您提到的大多数框架都是开源的,因此如果您愿意,您可以查看它们的代码并亲自了解它们的功能。

首先:

用户成功登录后,我 检索他的所有数据,序列化它, 创建一个sessionID。我储存这个 用户Cookie中的sessionID和所有 数据库表上的序列化数据 链接sessionID和数据

当你“检索他的所有数据”时,这不是已经从数据库中获取了吗?为什么要序列化数据并将其放回数据库的另一部分?为什么不将用户id存储在会话变量中,并使用它查询您可能需要的任何用户信息

秒:

然后我提出一个问题,以确保 用户名和哈希密码 数据库中的匹配项

您从何处获得针对DB测试的每个请求的用户名和密码?听起来好像您正在测试用户,并根据数据库中的原始信息在数据库中序列化存储。如果是这样,这将始终匹配,因为这是您自己设置的

第三名:

为什么要使用cron作业删除过期的会话?会话具有内置的过期机制

通常,您希望使用指纹和/或趋势分析来保护会话。然后,您可以简单地将用户的主db键保存在会话变量中,并使用每个请求检索您可能需要的任何用户数据。此外,您不需要自己创建会话id并将其存储在cookie中。当您调用session_start()并将要保存的任何会话变量存储在$_sessionsuperglobal数组中时,PHP会为您处理此机制。您提到的大多数框架都是开源的,所以如果您愿意,您可以查看它们的代码并亲自了解它们的功能