为什么不使用PHP的内置会话处理?

时间:2010-04-28 16:39:02

标签: php session

PHP的内置会话处理是否存在 - 或者曾经存在 - 任何严重或重大问题?

我的意思是,它总是适用于我和我的项目。

但我看到一些代码库和框架似乎使用自定义处理程序。这是重塑轮子吗?或改善一些缺陷?有什么缺陷?

5 个答案:

答案 0 :(得分:12)

PHP内置会话处理程序的优缺点

  1. 优点:

    1. 易于使用(只需使用session_start()即可完成)
    2. 可用OOTB。
  2. 缺点:

    1. 仅使用 SESSID (或 SID SESSIONID 等)Cookie来识别用户。这并不多,而且使用XSS攻击或类似的东西很容易窃取这些信息。
    2. 在大多数情况下,您无法执行诸如获取活动会话总数的事情(通常用于谁在线?功能)
  3. 您自己的会话处理程序的优缺点

    1. 优点:

      1. 按照您希望的方式工作
      2. 完全控制您如何识别用户。您可以使用cookie,IP地址,浏览器签名来确保窃取会话是不可能的(或者至少这是一项更难的任务)。
      3. 您可以选择存储会话数据的位置(数据库/文件系统)
      4. 您可以控制整个会话机制
    2. 缺点:

      1. 您必须花费几分钟时间来创建此类处理程序

答案 1 :(得分:11)

  

目前是否存在 - 或者曾经存在过   曾经 - 任何严重或重大的   PHP内置会话的问题   处理?

内置处理程序没有问题。访问和删除旧会话文件很好。

  

这是重新发明轮子吗?要么   改善一些缺陷?有什么缺陷?

基于文件的会话处理适用于单个服务器网站。当应用程序需要在多个服务器上运行(扩展)时,可能会出现问题。主数据库可用于在多个服务器之间存储和提供会话信息。这可以使应用程序扩展时更容易。自定义会话处理程序可用于与数据库交互。

答案 2 :(得分:5)

覆盖会话行为的一个主要优点是能够将会话信息保存到数据库中。当它与用户身份验证相结合时,它可以成为一个强大的工具。

它确实开辟了一整套新的可能性:

  • 为网站管理员构建会话管理工具
  • 审核用户会话数据的跟踪。
  • 能够锁定用户帐户并轻松杀死活动会话

答案 3 :(得分:1)

推出自己的会话处理程序的一个原因是实现单点登录系统,或与其他应用程序共享会话(=通过Java / CF /任何应用程序验证会话)。

答案 4 :(得分:0)

会话只能达到一定的规模吗?