我正在使用Oauth2 implicit flow
来保护单页应用程序& Rest API。
如果您不熟悉oauth2隐式流程,请快速浏览:
我们正在使用隐藏的iframe&小javascript访问令牌&
现在,恶意网站看起来很容易包含相同的iframe,如果用户已登录,则只需从哈希片段中检索访问令牌。
我看过X-Frame-Options
他们无法阻止重定向,只能防止在内部呈现内容。但是我们的令牌位于已经到达浏览器的url片段上。
由于这是我们的“自己的”应用程序,我们跳过了用户的批准步骤,只要redirect_uri匹配&用户登录。可能这个人也更多地牺牲了我们的安全性。
这看起来像是一个不可接受的安全漏洞,有什么建议吗?
答案 0 :(得分:0)
我遇到同样的问题..在查看您的来源并提取您发送的参数后,恶意用户可以这样做:
var uri = addQueryString(authorizeUri, {
'client_id': '11',
'redirect_uri': returnUri,
'state': nonce,
'scope': 'bio notes',
'response_type': 'token',
});
console.log(uri);
$('body').append(`<iframe src="${uri}"/>`);
$('iframe').css({
'display' : 'none'
})
$('iframe')[0].addEventListener("load", function () {
var uriWithToken = $('iframe')[0].contentWindow.location.href;
token = uriWithToken.split('access_token')[1].split("=")[1];
expires = uriWithToken.split('expires_in')[1].split("=")[1];
console.log(uriWithToken);
console.log("TOKEN = " + token);
console.log("EXPIRES = " + expires);
$('iframe').remove();
});
非常感谢你的遗嘱让我感到不舒服......