使命:
open redirection应用程序中防止ASP.NET MVC 5
故事:
用户在网站/的某个页面上,说出概述页面/Home/Overview并单击登录
登录后,服务器返回一些绝密的用户特定数据,并重定向到用户发起登录请求的页面。
我需要确保服务器在登录后不要愚蠢地重定向到黑客的网站,并且还要传递绝密的用户特定数据。
的值

  • _Controller.Request.UrlReferrer
  • _Controller.Request.UrlReferrer.AbsoluteUri
  • _Controller.Request.Url.AbsoluteUri
  • _Controller.Url.IsLocalUrl(returnUrl)

  • 分别是:
  • {https://localhost:44300/Home/Overview}
  • "https://localhost:44300/Home/Overview"
  • "https://localhost:44300/Account/Login?returnUrl=%2FHome%2FOverview"
  • false

  • c# - 为什么ASP.NET MVC中的本地URL的Url.IsLocalUrl为false?-LMLPHPUrl.IsLocalUrl的值为false,这在逻辑上是错误的。
    在这种情况下,如何确保用户在成功登录后安全地重定向到/Home/Overview而不是http://blackHatHackerWebsite.com
    为什么ASP.NET MVC中的本地URL的Url.IsLocalUrl为false?

    最佳答案

    Url.IsLocalUrl("/Home/Overview")绝对是true。您会收到false,因为它正在评估Url.IsLocalUrl("%2fHome%2fOverview")。也就是说,您对returnUrl进行了两次网址编码。尝试找到不需要的编码的地方。

    关于c# - 为什么ASP.NET MVC中的本地URL的Url.IsLocalUrl为false?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34714789/

    10-09 14:30