gpt4 book ai didi

c# - 为什么 Url.IsLocalUrl 对于 ASP.NET MVC 中的本地 URL 是假的?

转载 作者:太空狗 更新时间:2023-10-29 20:27:05 24 4
gpt4 key购买 nike

使命:

防止open redirectionASP.NET MVC 5应用

故事:

用户在网站 / 的某个网页上,比如 overview 页面 /Home/Overview 然后点击 login

登录后,服务器返回一些绝密用户特定数据,并重定向到用户发起登录请求的同一页面。

我需要确保服务器在登录后不会愚蠢地重定向到黑客的网站,并传递绝密用户特定数据。

的值(value)观

  • _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"
  • 错误

values for redirection

Url.IsLocalUrl 的值为 false,这在逻辑上是错误的。

在这种情况下,我如何确保用户安全地重定向到 /Home/Overview 而不是 http://blackHatHackerWebsite.com登录成功后?

为什么 Url.IsLocalUrl 对于 ASP.NET MVC 中的本地 URL 为 false?

最佳答案

Url.IsLocalUrl("/Home/Overview") 绝对是 true。你得到 false 因为它正在评估 Url.IsLocalUrl("%2fHome%2fOverview")。也就是说,你的 returnUrl 被 url 编码了两次。尝试找到您有不必要的编码的地方。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com