安全 - 与客户共享齿轮工作ID,不良做法?

时间:2011-10-03 15:30:32

标签: web-applications security gearman

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

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

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

我的问题是:与客户共享内部职位识别符是否存在安全隐患?

1 个答案:

答案 0 :(得分:1)

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

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

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