在PHP中安全地保存会话数据

时间:2010-07-14 12:02:12

标签: php security session tmp

我试图理解会话如何在PHP中工作,并发现会话数据默认存储在文件系统中。在共享托管环境中,会话数据可以由任何用户编写的PHP脚本读取。如何防止这种情况?

5 个答案:

答案 0 :(得分:6)

您可以覆盖脚本的会话保存处理程序,以使用除文件系统之外的其他内容,例如数据库或内存缓存。以下是详细的实施:http://phpsec.org/projects/guide/5.html

答案 1 :(得分:1)

取决于您对php.ini文件的访问级别 - 如果您在运行suPHP的共享主机环境中并允许您拥有自己的php.ini文件(例如),那么您可以简单地设置session.save_path到〜/ tmp之类的路径而不是/ tmp,这通常是共享的。

首先,我不认为你实际上可以从其他应用程序读取php会话数据。我相信这对于观看它的人来说是相当独特的。

最后,php Session数据不仅仅是文件系统保存。它也可以设置为保存在用户机器上的cookie中,或者您可以设置php会话数据存储在数据库中。

答案 2 :(得分:1)

编写自己的SESSION包装器。

例如CodeIgniter的session library doe不依赖于PHP的本机,它更安全:

  

注意:Session类不使用本机PHP会话。它会生成自己的会话数据,为开发人员提供更多灵活性。

答案 3 :(得分:1)

您可以使用session_save_path()将会话数据目录更改为未共享的目录。

答案 4 :(得分:1)

使用session_save_path()并将会话文件夹更改为“/ htdocs / storage / sessions”。现在会话只保存到您指定的路径。