我正在执行服务器端oAuth2流程。
我注意到谷歌为他们的oAuth2登录API添加了一个很酷的功能,redirect_uri=postmessage
因此我们不会在浏览器网址栏上显示真正的redirect_uri,并且不会包含authorization code
在重定向网址。
对于linkedin,当用户接受与应用分享他的个人数据时,回复网址如下:
http://dev.localhost.com:8080/auth/linkedin?code=xxxxxxxxxxx&state=yyyyyyyyyyyyy
Google
的情况相同,除非我们用redirect_uri
替换真实postmessage
。
如果在网址中设置了redirect_uri +响应代码,则每个恶意脚本都可以从网址中检索返回的code
并执行自己的身份验证。
那么,有没有办法隐藏LinkedIn和Facebook的返回参数和redirect_uri?
答案 0 :(得分:1)
LinkedIn和Facebook不容易受到访问redirect_uri的恶意脚本的攻击。</ p>
假设您使用推荐的response_type=code
两个API,您需要从服务器发出包含API密码和code
值的请求,以获取用户令牌。 LinkedIn在Exchange Authorization Code for a Request Token中对此进行了描述,Facebook在Exchanging code for an access token中对此进行了描述。
使用Facebook的额外安全性可以要求every request be signed with your API secret。通常可以使用强大的Content Security Policy来帮助防止恶意脚本首先运行,从而获得额外的保护。并确保通过TLS专门托管您的网站,以防止您自己的JavaScript被修改。