登录后重定向到未转义的URL的安全隐患

时间:2017-03-13 03:32:12

标签: security passport.js url-redirection url-encoding

我们是否需要取消从用户应用程序接受的URL以便重定向到(例如,如果登录成功,如此问题)?它们是否存在任何安全漏洞?

更长的问题(代码审查): -

在我的webapp(带有passportjs)上实现facebook登录时,我遇到了一个小型中间件功能的以下实现,该功能在会话中设置了返回URL。

function checkReturnTo(req, res, next) {
  var returnTo = req.query['returnTo'];
  if (returnTo) {
    req.session.returnTo = querystring.unescape(returnTo);
  }
  next();
}

如果我没有忘记“返回”,该怎么办?上面的网址?

req.session.returnTo = returnTo;

在这两种情况下,代码都可以正常工作。我试图谷歌,但无法通过重定向网址找到任何特定的漏洞。我认为这会成为一个很好的问题。

1 个答案:

答案 0 :(得分:1)

确实有security issues with unrestricted redirects after login,但是转义和取消网址与它们无关。

一般情况下,如果你的框架已经正确地提取和取消了URL参数,那么就不需要再次取消它们了(当然,除非生成登录URL的代码冗余地双重转义重定向URL由于某些原因)。但是,我并不是特别熟悉您正在使用的框架,因此我无法确定是否可能因某些奇怪的原因需要此处。