php会话对于多租户系统是否足够安全

时间:2013-01-06 04:01:16

标签: php session

我正在创建一个多租户系统(第一次)。我有点担心这个系统,因为应用程序的所有用户详细信息都将保存在数据库的同一个表中。当用户登录时,我计划设置包含其$_SESSION的{​​{1}}变量,并使用此变量访问其所有信息(数据库中的所有信息都将包含clientid列。)

我认为这是使用PHP& amp处理多租户系统的唯一解决方案。 MySQL的。这足够安全吗?或者我应该为每个客户选择单独的数据库。我担心如果客户可以将他们的clientid说'从'12'更改为'45',那就意味着他们可以访问其他人的数据。

有更好的方法吗?或者解决方案是处理多租户系统中数据访问(PHP和MySQL)的唯一方法吗?

1 个答案:

答案 0 :(得分:2)

PHP通过使用会话来跟踪谁是谁,而会话又使用cookie来识别服务器数据。

会话cookie类似于

PHPSESSID=0f0f0f0f0f0f0f0f0f... (32 hexits, usually)

会话数据存储在服务器端,因此用户将无法(轻松*)将clientid更改为其他人。我很容易说,因为用户可以尝试brute-force their PHPSESSID value并获得对另一个服务器会话的访问权限(但这应该花费很长时间)。

也可以使用XSS exploits之类的其他策略来发现其他服务器会话。

您可以搜索StackOverflow以获取更多信息:

为了安全起见,请确保在没有事先清洁的情况下(使用HTMLPurifier或htmlspecialchars())输出用户输入,并在登录/注销或升级特权时调用session_regenerate_id()用户。