阻止open redirection申请中的ASP.NET MVC 5
用户位于网站/
的某个网页上,说概述页面/Home/Overview
并点击 login
登录后,服务器返回一些绝密用户特定数据,并重定向到用户发起登录请求的同一页面。
我需要确保服务器在登录后不会愚蠢地重定向到黑客的网站,并传递绝密用户特定数据。
的值
_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
Url.IsLocalUrl
的值为false,这在逻辑上是错误的。
在这种情况下,如何确保用户在成功登录后安全地重定向到/Home/Overview
而不是http://blackHatHackerWebsite.com?
答案 0 :(得分:4)
Url.IsLocalUrl("/Home/Overview")
绝对是true
。您得到false
因为它正在评估Url.IsLocalUrl("%2fHome%2fOverview")
。也就是说,您returnUrl
被网址编码两次。尝试找到不必要的编码。