将回调URL放在URL的查询字符串中是否安全?

时间:2015-10-13 20:58:09

标签: asp.net-mvc authentication authorization pci-compliance

我正在使用ASP.NET MVC5 Web应用程序。假设用户的会话超时,他们必须进入登录屏幕再次进行身份验证,然后重定向回他们来自的URL。将返回(回调)URL放在登录URL的查询字符串中是一种好习惯吗?

有人知道PCI的合规性吗?我记得通过PCI培训他们提到了回调网址,但我不记得这是否符合要求。如果没有,ASP.NET MVC中是否有更安全的方式来传递回调URL?我目前没有使用任何Auth / Auth库,只是使用cookie管理手动进行所有身份验证...

提前致谢!

1 个答案:

答案 0 :(得分:1)

与任何其他代码一样,它可以与PCI兼容,具体取决于是否正确/安全地实施。

例如:

private ActionResult RedirectReturnUrl(string returnUrl)
{
    return Redirect(returnUrl);
}

如果您使用上述代码重定向到查询字符串中的returnUrl,则您将容易受open redirection attacks攻击。

但是,如果您确保returnUrl是当前host的本地

,则可以使此安全

private ActionResult RedirectToLocal(string returnUrl)
{
   if (Url.IsLocalUrl(returnUrl))
   {
     return Redirect(returnUrl);
   }

   return RedirectToAction("Index", "Home");
}

有关详细信息,请参阅this