【问题标题】:How to deal with a potentially dangerous Request.Path如何处理有潜在危险的 Request.Path
【发布时间】:2019-04-22 18:20:14
【问题描述】:

我收到此错误:从客户端 (:) 检测到潜在危险的 Request.Path 值。

我正在尝试将 DateTime 和 int 传递给 ActionResult,我创建了一个自定义路由来处理它。我在我的 URL 中看不到 (:),所以不知道如何替换字符串。是我的 URL 日期中的 (%) 导致它吗?这是我将变量传递给控制器​​的代码:

//View
DateTime raceDate = DateTime.Today;
<center><a href="@Url.Action("EventInfo", new {raceDate= date, trackID=trID})" class="buttonize" target="_blank">View</a></center>

//Controller
public ActionResult EventInfo(DateTime raceDate, int trackID )
    {
        EventInfomodel = new EventInfo();
        model.MyRace = db.GetRaceDetails(raceDate, trackID)
        return View(model);
    }

//Route.Config
routes.MapRoute("Home/EventInfo", "Home/EventInfo/{raceDate}/{trackID}", new { controller = "Home", action = "EventInfo", raceDate = UrlParameter.Optional, trackID= UrlParameter.Optional });

我的浏览器中的 URL 如下所示:

 Home/EventInfo/04/22/2019%2000%3a00%3a00/59

我是全新的 MVC 和 C#,所以任何帮助都会很棒,谢谢。

【问题讨论】:

  • 您有两个参数,Home/EventInfo/{raceDate}/{trackID} 比赛日期和赛道 ID。您浏览器中的 url 是: Home/EventInfo/04/22/2019%2000%3a00%3a00/59 您的 raceDate 被传递为 04/22/2019,其中 / 被认为是不存在的路径。尝试格式化您的日期,然后尝试

标签: c# asp.net-mvc


【解决方案1】:

安全是因为你得到错误的原因

为什么:URL 编码确保所有浏览器都能正确传输 URL 字符串中的文本。问号 (?)、与号 (&)、斜线 (/) 和空格等字符可能会被某些浏览器截断或损坏。

解决方案: 当您编写您的 URL 时,需要以格式编码。

HttpContext.Current.Server.UrlEncode(<Your URL>);

谢谢。

【讨论】:

  • 而且您的日期格式包含“/”字符,因此 MVC 路由使用“/”字符来定义 URL 中的路由 ..Home/EventInfo/04/22/2019 ....not这样的路径存在于您的路由表中
【解决方案2】:

@Praneet Nadkar 您的建议奏效了,我在视图中将日期格式化为字符串,如下所示:

DateTime mydate = DateTime.Today;
string   date   = mydate.ToString("yyyy-MM-dd");

现在我的网址看起来好多了并且可以正常工作

Home/EventInfo/2019-04-22/59

谢谢

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多