0

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

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

我的问题是哪些信息太敏感而无法保存在内存中(使用 PHP 会话)。目前,这些信息包含个人资料(姓名、公司等)、联系人(电子邮件、电话)、设置(时事通讯、通知)和付款信息(计划、试用和引用 Stripe 的客户 ID)。

我认为唯一会处于边缘的是支付信息,但除非我的 API 密钥被泄露,否则他们不应该能够从 Stripe 访问任何数据。

4

2 回答 2

2

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

您可以查看这篇有趣的文章PHP Session Fixation / Hijacking,了解如何保护更多会话。

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

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

因此,加密敏感数据可以防止他读取原始数据。

于 2013-04-07T04:55:31.923 回答
1

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

于 2013-04-07T04:47:37.090 回答