使用Google登录Api时如何在数据库中安全地插入和使用用户信息

时间:2017-10-26 06:52:24

标签: php mysql facebook authentication google-login

我正在将Google的登录Apis集成到一个网站上,我需要将用户的详细信息放在我们的数据库中,以便在他们下次登录时使用它。

谷歌开发人员明确指出开发人员不应将用户ID存储在数据库中的行,而应使用谷歌生成的令牌ID来验证用户的合法性。

我完全赞同这一点,但令牌的直播周期只是很短的一段时间。如果我们在数据库中插入令牌,则下次用户登录时,令牌将与我们的数据库中的令牌不同。那么我们如何通过谷歌登录来通过令牌ID授权用户?

我已经阅读了所有googles开发人员文档https://developers.google.com/identity/sign-in/web/backend-auth,除了他们的身份验证过程之外,没有具体解释这一点。

有人可以帮助那些可能有过这方面经验的人吗?

非常感谢

这是谷歌警告

  

警告:不接受普通用户ID,例如您可以使用的用户ID   您的后端服务器上的GoogleSignInAccount.getId()方法。一个   修改后的客户端应用程序可以向服务器发送任意用户ID   模仿用户,因此您必须使用可验证的ID令牌   安全地获取服务器端登录用户的用户ID。

1 个答案:

答案 0 :(得分:1)

  

谷歌开发人员明确指出开发人员不应将用户ID存储在数据库中的行

不,他们没有。

他们告诉您,您的服务器不应该信任用户ID直接由客户端发送给它 - 因为任何人都可以轻易伪造这些。

相反,您应该将您在客户端获得的令牌发送到服务器(这些令牌不能“猜到”,因此您不能简单地伪造它们) - 然后您制作一个<使用该令牌进行em>服务器端 API调用,以获取用户ID。