将回调 URL 放入 URL 的查询字符串中是否安全?
Is it secure to put a callback URL in a URL's query string?
我正在开发 ASP.NET MVC5 网络应用程序。假设用户的会话超时,他们必须转到登录屏幕再次进行身份验证,然后被重定向回他们来自的 URL。将 return(回调)URL 放在登录 URL 的查询字符串中是一种好习惯吗?
有人知道这方面的 PCI 合规性吗?我记得参加过 PCI 培训,他们提到了回调 URLs,但我不记得这是否符合合规性。如果没有,在 ASP.NET MVC 中是否有更安全的方式来传递回调 URL?我目前没有使用任何 Auth/Auth 库,只是使用 cookie 管理手动完成所有身份验证...
提前致谢!
与任何其他代码一样,它可以符合或不符合 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
我正在开发 ASP.NET MVC5 网络应用程序。假设用户的会话超时,他们必须转到登录屏幕再次进行身份验证,然后被重定向回他们来自的 URL。将 return(回调)URL 放在登录 URL 的查询字符串中是一种好习惯吗?
有人知道这方面的 PCI 合规性吗?我记得参加过 PCI 培训,他们提到了回调 URLs,但我不记得这是否符合合规性。如果没有,在 ASP.NET MVC 中是否有更安全的方式来传递回调 URL?我目前没有使用任何 Auth/Auth 库,只是使用 cookie 管理手动完成所有身份验证...
提前致谢!
与任何其他代码一样,它可以符合或不符合 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