PHP目前的会话处理是否存在 - 或者曾经存在 - 任何严重或重大问题?
我的意思是,它总是适用于我和我的项目.
但我看到一些代码库和框架似乎使用自定义处理程序.这是重塑轮子吗?或改善一些缺陷?有什么缺陷?
优点:
易于使用(只需使用session_start()
,你就完成了)
可用的OOTB.
缺点:
仅使用SESSID(或SID,SESSIONID等)cookie来识别用户.这并不多,而且使用XSS攻击或类似的东西很容易窃取这些信息.
在大多数情况下,您无法执行诸如获取活动会话总数(通常用于Who的在线?功能)之类的操作
优点:
按照您希望的方式工作
完全控制您如何识别用户.您可以使用cookie,IP地址,浏览器签名来确保窃取会话是不可能的(或者至少它是更难的任务).
您可以选择存储会话数据的位置(数据库/文件系统)
您可以控制整个会话机制
缺点:
你必须花几分钟时间来创建这样的处理程序
PHP目前的会话处理是否存在 - 或者曾经存在 - 任何严重或重大问题?
内置处理程序没有问题.访问和删除旧会话文件很好.
这是重塑轮子吗?或改善一些缺陷?有什么缺陷?
基于文件的会话处理适用于单个服务器网站.当应用程序需要在多个服务器上运行(扩展)时,可能会出现问题.主数据库可用于在多个服务器之间存储和提供会话信息.这可以使应用程序扩展时更容易.自定义会话处理程序可用于与数据库交互.
覆盖会话行为的一个主要优点是能够将会话信息持久保存到数据库中.当它与用户身份验证相结合时,它可以成为一个强大的工具.
它真正开辟了一整套新的可能性:
为站点管理员构建会话管理工具
审核用户会话数据的跟踪.
能够锁定用户帐户并轻松杀死活动会话
等等