我正在尝试将用户重定向到用户登录之前的网址。
我从一些开源获得此代码,但我不理解下面描述的if语句的条件部分。
什么是LocalUrl?
我为什么要检查“returnUrl”是否是本地的?
LocalUrl与Absolute url或Relative url有什么关系吗?
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
答案 0 :(得分:0)
IsLocalUrl调用用于验证返回URL不在某个随机外部站点上,但属于您的本地站点。
这是一种防范开放式重定向攻击的方法(参见MSDN ref)
如果有人制作了一个带有返回URL的恶意链接到一个狡猾的第三方网站,此检查会阻止某人实际被重定向到该网站。