【问题标题】:Secure Google Redirect URL安全的 Google 重定向 URL
【发布时间】:2014-09-10 10:47:01
【问题描述】:

我在获取用户信息和电子邮件的网站中启用了 Google 登录选项。我正在使用 适用于 PHP 的 Google API 客户端库

我将重定向 URL 设置为

$client->setRedirectUri('http://login.example.com/authenticate/redirect_back');

在 Google Developers Console 中也是如此。所以在用户登录成功后谷歌重定向回

http://login.example.com/authenticate/redirect_back?code=4/gdtpUtOQ3ThblOTVnhEOtoeoeNRa.AqLKJLKDJxy_bnfDxpKmSx6cjgI

现在我的问题是“如果有人故意创建 code=4/xzzzz 怎么办?”因为谷歌公开展示了它将重定向到哪里(见截图链接|对不起,我不能以

Google Auth Screenshot

我用虚拟值尝试了自己,它得到了验证。但是在获取 UserInfo 时会抛出 invalid_grant 的致命错误。有没有办法在 Google 重定向回来之后验证代码值?

【问题讨论】:

  • 您能解释一下身份验证如何为您工作吗?流程不清楚。你如何获得用户信息和电子邮件。我想这是通过使用重定向中的代码。请帮我确认一下..
  • @SambhavSharma,这里是例子sanwebe.com/2012/11/login-with-google-api-php

标签: php oauth-2.0 google-oauth google-api-php-client


【解决方案1】:

我猜您不需要保护 Google 重定向 URL。

因为身份验证流程清楚地表明,

once user grants the basic permission to access their data, user is redirected back to your website with Authentication code. The code is used to obtain Access Token, using Access Token the application can access current user data from Google, which could be used to register and login the user.

因此,如果用户尝试使用任意代码点击回调 URL,Google 将无法验证用户身份并为您提供 User Infoemail 。因此,您将无法注册/登录用户。

【讨论】:

  • 事情是它提供了Access Token,因为它在提供访问令牌时没有检查谷歌服务器。但是一旦我请求用户信息,它就会使用无效的访问令牌向服务器发出请求并抛出致命错误......我想在致命错误之前验证访问令牌或代码。
  • 您需要做的是在您的代码中进行某种错误/异常处理。 Google 永远不会告诉您如何验证本地服务器上的访问令牌。希望它能解决问题..
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多