ASP.NET MVC可以阻止Open Redirect安全问题

时间:2017-11-19 10:50:04

标签: c# asp.net asp.net-mvc security asp.net-mvc-4

我读了一些asp.net mvc代码:

[HttpGet]
public ActionResult Move(string url)
{
    return Redirect(HttpUtility.UrlEnocode(url));
}

我担心上面的代码可能导致Open Redirect安全问题,因为“url”来自用户的输入,永远不会被过滤/保护....

所以网址可能是“www.hackersite.com”,这将是危险的......

但有人告诉我,asp.net mvc框架可以通过asp.net mvc框架来防止这个问题。我不知道该怎么做....?

1 个答案:

答案 0 :(得分:4)

使用哪种技术并不重要。要防止打开重定向,您只需遵循 OWASP 指南即可。 通常,站点重定向有两种不同的情况:

  1. 如果您应该将用户重定向为流程的一部分。 (如同之后 成功登录重定向到Home.aspx)。
  2. 如果网站上有链接,用户可以更改并点击(如在Facebook帖子中有人发布了指向某个外部网站的链接)。
  3. 在这两种情况下,缓解都可能不同。

    对于案例#1: 您必须确保Url是LocalUrl aka。在同一个网络应用程序的域中。否则,将主页重定向到另一个页面ex:您的索引。

    if (Url.IsLocalUrl(returnPath))
        return Redirect(returnPath);
    else
        return RedirectToAction("Index", "Home"); 
    

    对于案例#2:

    您可能需要先检查网址是否为本地网址。如果不是,您将不得不将用户重定向到网页并要求他确认他将被重定向到另一个域。

    您可以在此处找到更多信息:https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet