c# - ASP.NET MVC 能否防止 Open Redirect 安全问题

标签 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”来自用户的输入并且永远不会被过滤/保护....

所以 url 可能是一些“www.hackersite.com”,那将是危险的......

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

最佳答案

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

  1. 如果您应该将用户重定向作为流程的一部分。 (如后 成功登录重定向到 Home.aspx)。
  2. 如果网站上有用户可以更改和点击的链接(例如在 Facebook 帖子中,有人发布了指向某个外部网站的链接)。

在这两种情况下,缓解措施可能不同。

对于案例 #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

关于c# - ASP.NET MVC 能否防止 Open Redirect 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47375991/

相关文章:

c# - 如何使用 Entity Framework 为我的存储库实现事务?

c# - 单项字典

c# - 在特定位置写入数据

c# - block 的 Monotouch 绑定(bind)语法

c# - 服务帐户无法从 Windows 证书存储加载 X509Certificate

c# - 使用 Entity Framework 从存储过程中获取数据

c# - AuthorizeAttribute 不断重定向到/Account/Login

jquery - MVC3 : make checkbox required via jQuery validate?

jquery - Accordion 脚本在 ajax 更新面板中不起作用

asp.net-mvc - 使用mvc的主要目的