php - 如何在 PHP 中使用 Google 重新验证时强制提示密码?

标签 php security oauth google-api-php-client

我已经在我的 PHP 网站上实现了 Google OAuth2,并且登录工作正常。但注销后,用户不再需要输入Google帐户的密码;他们只需在出现的列表中点击自己的 Google 帐户即可返回。这不是存在安全风险吗?

这是使用 google-api-php-client 版本 2.2.2 的基本 PHP 7.4 设置。

我注销用户

unset($_SESSION["access_token"]);
$gClient->revokeToken();
session_destroy();

因为我将访问 token 存储在 session 变量中。

我希望无论您是第一次登录还是后续登录,登录过程 - 输入 google 帐户名 - 下一步 - 输入密码 - 下一步 - 都是相同的。但第一次之后不会提示您输入密码。

我尝试添加一个包含 Google 注销页面的隐藏 iframe,如下所示:

<iframe id="logoutframe" src="https://accounts.google.com/logout" style="display: none"></iframe>

但这使我完全退出 - 在其他浏览器选项卡中的其他网站上也是如此,我发现这非常不方便。

最佳答案

您已经通过 Google 身份验证,因此无需重新输入密码。

强制注销(正如您使用 iframe 实现的那样)会导致您注销 Google 帐户,从而给您带来不便。

一旦您的应用程序获得了对您 Google 帐户的访问权限,并且您处于有效的 Google 身份验证状态,系统就不会提示您输入密码。这就是 OAuth2 的工作原理,也是设计使然。

关于php - 如何在 PHP 中使用 Google 重新验证时强制提示密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966129/

相关文章:

php - 带有 JSON 正文的 POST 请求

javascript - JSLint "disallow insecure in regex"选项的用途

postgresql - 当拥有一个保留帐户和信用卡详细信息的数据库时,我需要什么样的安全性?

php - 可以将密码以纯文本形式存储在 php 变量或 php 常量中吗?

php - 如何使用来自 discord oauth2 登录的访问 token 来获取用户信息

javascript - Meteor Facebook 登录错误 Accounts.LoginCancelledError : No matching login attempt found

oauth - "Could not authenticate you."- 使用 Twitter OAuth 时出错

PHP:包含文件中的 "use"?

php - Ajax 返回随机值?

PHP PDO 使用 bindParam 第一个参数(不带冒号)