为了账号安全,请及时绑定邮箱和手机立即绑定

重定向到 ASP.net 核心中的 url

重定向到 ASP.net 核心中的 url

C#
侃侃无极 2022-01-15 17:23:40
我需要一些帮助我一直在研究一种从 VS 2017 和 asp.net Razor 创建的 program.cs 文件中加载页面的方法,但我无法弄清楚这是如何完成的,我在网上找到了回答,但对于我的生活,我找不到任何可行的方法。我想要做的是在查找之后我需要使用添加的搜索字符串再次加载页面,我有所有代码进行查找和交叉检查,但我无法让代码再次重定向到页面使用添加的搜索字符串。Response.Redirect("/machinery?MachineLocation=" + searchstring);上面的代码在 program.cs 或 startup.cs 中不起作用,但在任何 cshtml.cs 文件中都起作用。我曾尝试 DI Httpcontext 但这一直返回 null。任何指针都会很棒。
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

从控制器重定向到完整的 URL 只需通过以下方式完成:

return Redirect(stringFullUrl);


查看完整回答
反对 回复 2022-01-15
?
慕村225694

TA贡献1880条经验 获得超4个赞

简短的回答,使用:


return LocalRedirect(ReturnUrl);

长答案(出于安全目的很重要):


看起来您正在从用户那里获取 url,如果是这种情况,我不建议使用 return Redirect(ReturnUrl);本身,因为这为开放重定向漏洞攻击打开了通道。基本上,某人可以在某处(例如在广告中)有一个锚元素,该元素使用名为 ReturnUrl 的查询字符串参数将用户引导到您的登录页面,该参数指向他们自己的恶意网站。另一种方法是 ReturnUrl 查询字符串会将用户从您的登录表单重定向到一个看起来与您的完全一样的恶意登录表单,然后他们向用户显示密码不正确,让他们认为他们可能错过了一个字母左右,所以用户尝试再次登录,但这一次他们实际上是在将他们的凭据提交给恶意登录表单,而不是你的。然后,黑客将他们的凭据提交到您的网站后将他们重定向到您的网站,这样他们就不会发现任何错误,在他们看来,他们输错了密码,但在第二次尝试时,他们成功登录。所以使用LocalRedirect()而不是Redirect()将首先检查返回 url 是否是您自己网站的 url,如果不是,则重定向失败并引发异常。避免异常但检查本地 url 的另一种方法是执行以下操作:


if (Url.IsLocalUrl(ReturnUrl)) {

    return Redirect(ReturnUrl);

}

这将为您提供相同的结果而不会引发异常,因为您首先检查 url 是否属于您的 Web 应用程序,然后再继续进行重定向


查看完整回答
反对 回复 2022-01-15
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信