我已在我的网站上实施Google OAuth登录。用户使用他/她的Google帐户登录,到达我的欢迎页面&现在在我的欢迎页面&其他后续页面/脚本我需要验证哪些变量进行身份验证&检查用户是否登录。现在我只是这样做:
checklogin.php (using it in require_once in all my subsequent php scripts)
if(isset ( $_SESSION['access_token'] ))
{
//logged in
}
else
{
//NOT LOGGED IN
header('location:login.php');
}
我是否还需要检查访问令牌的值?任何其他安全变量,使我的登录检查过程更健壮?如果是,那么如何检查呢?或者这个检查是否足够?
答案 0 :(得分:1)
从评论中删除
$ _ SESSION ['access_token''] ='foo'并运行它然后我的条件将返回true并且他将跳转到我的网站并查看任何用户的所有私人数据?
如果您真的担心某人会这样做,那么最好的办法就是针对tokeninfo端点验证您的访问令牌。 Doc
https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=[access_token]
在您在浏览器中讨论会话变量时,我不确定您认为用户如何做到这一点。但浏览器黑客攻击不是我的专长。
UserInfo端点
另一种选择是检查用户信息的终点。所有身份服务器都有此端点,该端点返回有关当前用户的信息。因为您正在请求配置文件范围,所以您应该能够看到这一点。
请求
GET www.googleapis.com/userinfo/v2/me
Authorization: Bearer ya29.GluEBbGJOYKQ0gcDAFvU2iRKotG-a6MvbyNP6mUUk96RDKJHIFOR_RKiWxl8vQ01rbgy9lP_KmspvrHDzHMZ_
回复
{
"family_name": "Lawton",
"name": "Linda Lawton",
"picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg",
"locale": "en",
"gender": "female",
"email": "xxx@gmail.com",
"link": "https://plus.google.com/+LindaLawton",
"given_name": "Linda",
"id": "7200475532672775346",
"verified_email": true
}
我的内部ID是google