在朋友请求之后使用数字签名来证明社交应用程序中的友谊?

时间:2016-07-25 21:33:38

标签: security social-networking bigdata

我正在构建某种社交应用程序,其中包含“朋友”的概念,朋友可以对他们的一个或多个朋友采取行动, 每当有人发出任何行动请求时,我宁愿不向DB询问友情是否确实存在。 我提出的一个想法是在友情被批准后,将向每个用户发送数字签名,可以在服务器中检查每个请求,这应该比询问数据库的成本低。 然后,我可以每天更改异步密钥,并强制用户请求新的数字签名,在这种情况下,我会接近数据库来测试友谊(这对安全性有好处,但如果用户想要取消友谊,也必须这样做)。

我问的是,这是一个可怕的想法吗?也许我没有看到什么。或者只是关于这些场景的任何信息的任何链接都会很棒。

1 个答案:

答案 0 :(得分:1)

可以完成分发数字签名的想法,虽然我不确定它是否会比查询数据库更快,因为数据库的速度非常快。

让我们继续前进,认为这确实是一个好主意。您需要一个类别的令牌,其中包含有关谁是您的朋友的信息,并且必须由服务器进行验证。对我来说,这似乎是你可以使用JSON Webtoken(JWT)的东西。

Here is the basics on JWTs

JWT有三个部分:标题,有效负载和签名。标头定义令牌有效的时间长度,有效负载可以包含朋友列表(或朋友的ID)。签名是整个事物的哈希值,用服务器的私钥签名,从而验证服务器已经批准此令牌有效,直到时间X.整个事件在发送之前进行编码。

然后,您可以在某种HTTP标头中发送JWT,可能是Authorization标头。然后服务器可以快速解码JWT(有许多语言的库,JWT是一个非常好的标准),因此不需要查询数据库。 JWT的大小确实需要发送,因此我不确定你会从中获得任何速度。