ASP.NET MVC 能否防止打开重定向安全问题
Could ASP.NET MVC prevent Open Redirect security issue
我读某人 asp.net mvc 代码为:
[HttpGet]
public ActionResult Move(string url)
{
return Redirect(HttpUtility.UrlEnocode(url));
}
恐怕上面的代码可能会导致 Open Redirect 安全问题,因为 "url" 来自用户的输入,而不是 filtered/protected...
所以 url 可能是一些 "www.hackersite.com",那会很危险...
但是有人告诉我asp.netmvc框架可以通过asp.netmvc框架来防止这个问题。我不知道该怎么做....?
您使用的是哪种技术并不重要。要防止 Open Redirection,您只需遵循 OWASP 指南。
通常站点重定向有两种不同的情况:
- 如果您应该将用户重定向作为流程的一部分。 (如后
成功登录重定向到 Home.aspx)。
- 如果网站上有 link 用户可以更改并点击(就像在 facebook post 中有人 post 编辑了一个 link一些外部网站)。
在这两种情况下,缓解措施可能不同。
案例#1:
您必须确保 Url 是 LocalUrl 又名。在同一个网络应用程序的域中。否则将主页重定向到另一个页面,例如:您的索引。
if (Url.IsLocalUrl(returnPath))
return Redirect(returnPath);
else
return RedirectToAction("Index", "Home");
对于案例 #2:
您可能需要先检查 URL 是否是本地的。如果不是,您必须将用户重定向到网页并要求他确认他将被重定向到另一个域。
您可以在此处找到更多信息:https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet
我读某人 asp.net mvc 代码为:
[HttpGet]
public ActionResult Move(string url)
{
return Redirect(HttpUtility.UrlEnocode(url));
}
恐怕上面的代码可能会导致 Open Redirect 安全问题,因为 "url" 来自用户的输入,而不是 filtered/protected...
所以 url 可能是一些 "www.hackersite.com",那会很危险...
但是有人告诉我asp.netmvc框架可以通过asp.netmvc框架来防止这个问题。我不知道该怎么做....?
您使用的是哪种技术并不重要。要防止 Open Redirection,您只需遵循 OWASP 指南。 通常站点重定向有两种不同的情况:
- 如果您应该将用户重定向作为流程的一部分。 (如后 成功登录重定向到 Home.aspx)。
- 如果网站上有 link 用户可以更改并点击(就像在 facebook post 中有人 post 编辑了一个 link一些外部网站)。
在这两种情况下,缓解措施可能不同。
案例#1: 您必须确保 Url 是 LocalUrl 又名。在同一个网络应用程序的域中。否则将主页重定向到另一个页面,例如:您的索引。
if (Url.IsLocalUrl(returnPath))
return Redirect(returnPath);
else
return RedirectToAction("Index", "Home");
对于案例 #2:
您可能需要先检查 URL 是否是本地的。如果不是,您必须将用户重定向到网页并要求他确认他将被重定向到另一个域。
您可以在此处找到更多信息:https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet