Controller.Redirect(returnUrl)方法检查返回url

时间:2016-11-22 10:18:45

标签: c# asp.net-mvc

我正在尝试将用户重定向到用户登录之前的网址。

我从一些开源获得此代码,但我不理解下面描述的if语句的条件部分。

什么是LocalUrl?

 我为什么要检查“returnUrl”是否是本地的?

LocalUrl与Absolute url或Relative url有什么关系吗?

                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }

1 个答案:

答案 0 :(得分:0)

IsLocalUrl调用用于验证返回URL不在某个随机外部站点上,但属于您的本地站点。

这是一种防范开放式重定向攻击的方法(参见MSDN ref

如果有人制作了一个带有返回URL的恶意链接到一个狡猾的第三方网站,此检查会阻止某人实际被重定向到该网站。