在PHP会话中保存用户信息的安全漏洞?

时间:2013-04-07 04:33:50

标签: php security session

我正在创建一个以RESTful API为中心的Web应用程序。一旦用户登录,他们将收到会话ID和登录密钥,用于访问他们的数据,直到他们的会话到期为止。如果会话保存在内存中,Web应用程序(可能还有移动应用程序)将在每次加载页面时调用API以获取用户信息。我正在尽可能地优化这个API调用,我想知道缓存这些信息是否有意义。

每个包含用户数据的表都包含更新的时间戳(在每次Postgres更新时触发)。所以我可以修改API以接受可选的cache_timestamp参数。 API将首先检查自该时间戳以来是否已修改任何用户数据的表。如果有,那么它将返回更新的用户数据;如果没有,它将返回未修改的304,应用程序将使用缓存。

我的问题是哪些信息太敏感而无法保存在内存中(使用PHP会话)。目前,信息包含配置文件(名称,公司等),联系人(电子邮件,电话),设置(新闻稿,通知)和付款信息(计划,试用和引用Stripe的客户ID)。

我认为最重要的是支付信息,但除非我的API密钥遭到破坏,否则他们无法访问Stripe中的任何数据。

2 个答案:

答案 0 :(得分:2)

我不是安全专家,但由于会话存储在服务器上,攻击者访问数据的唯一方法就是获得一些权限。

您可以查看有关如何确保更多会话的有趣帖子PHP Session Fixation / Hijacking

如果用户的会话被劫持,则无事可做,攻击者将访问数据,就好像是有问题的用户一样。

如果攻击者可以利用与您的服务器相关的故障,那么他应该能够读取会话数据(默认情况下会存储在某些文件中)。

因此,加密敏感数据可能会阻止他原始阅读。

答案 1 :(得分:1)

我的观点也是一样,付款信息应该存储在Session变量中,但是你说它没有API密钥就无法访问。我认为你处于安全的一面。