1

我正计划将 Gearman 作业服务器整合到我的网站架构中。我计划使用 gearman 完成的一项特别任务是使用我的网站进行 Facebook 身份验证。

目前,我允许用户通过 Facebook JS SDK 授权我的 Facebook 应用程序来登录我的网站,在成功验证后,我通过 AJAX 调用将用户的 access_token 发送到我的服务器,一旦服务器拥有 access_token,它就会查询 facebook Graph API获取当前用户的信息并相应地设置用户的会话。我想将 facebook API 调用推送到工作线程。

我会将作业发送给 gearman,让 gearman 返回延迟的作业 ID,将该 ID 发送回客户端的浏览器,并让浏览器以设定的时间间隔(可能 0.5 或 1.0 秒)轮询服务器以查看 API 调用是否已完成通过将作业 ID 返回到服务器并让它检查作业的完成状态。

我的问题是:与客户共享内部工作标识符是否存在任何安全风险?

4

1 回答 1

1

共享可能不是问题,但是由于用户将 jobDd 提交回服务器以检查状态,因此没有什么可以阻止用户更改 jobId 并获取其他身份验证尝试的状态。这可能不是问题(因为您可能不会返回任何其他内容),但您至少会向任何竞争对手泄露有关您的应用程序受欢迎程度的一些信息。

我建议简单地生成一个随机密钥服务器端并将作业 ID 与该密钥相关联,然后使用随机密钥在浏览器和服务器之间进行通信以请求当前状态。

客户端将获取随机密钥,然后将其用于请求当前任务的状态,而充当客户端和 Gearman 的服务器将在数据库中查找密钥,检索实际的 jobId,然后查询 Gearman。

于 2011-10-04T11:28:40.270 回答