Mat*_*att 5 c# razor asp.net-core
我需要一些帮助,我一直在设法从VS 2017和asp.net Razor创建的program.cs文件中加载页面,但是我无法确定如何完成此操作,我在网上查找了回答,但是对于我的一生,我找不到任何可行的方法。我要做的是在查找后需要使用添加的搜索字符串再次加载页面,我拥有所有代码来进行查找和交叉检查,但是我无法使代码再次重定向到页面与添加的搜索字符串。
Response.Redirect("/machinery?MachineLocation=" + searchstring);
Run Code Online (Sandbox Code Playgroud)
上面的代码不适用于program.cs或startup.cs,但可以用于任何cshtml.cs文件。
我尝试去DI Httpcontext,但这一直返回null。任何指针都很棒。
Sha*_*uti 15
从控制器重定向到完整URL只需执行以下操作:
return Redirect(stringFullUrl);
Run Code Online (Sandbox Code Playgroud)
Zey*_*yad 10
简短的回答,使用:
return LocalRedirect(ReturnUrl);
Run Code Online (Sandbox Code Playgroud)
长答案(出于安全目的很重要):
看起来您正在从用户那里获取 url,如果是这种情况,我不建议使用 return Redirect(ReturnUrl);本身,因为这为开放重定向漏洞攻击打开了通道。基本上,某人可以在某处(如广告等)拥有一个锚元素,通过名为 ReturnUrl 的查询字符串参数将用户引导至您的登录页面,该参数指向他们自己的恶意网站。另一种方式是 ReturnUrl 查询字符串会将用户从您的登录表单重定向到一个与您的完全一样的恶意登录表单,然后他们向用户显示密码不正确,让他们认为他们可能错过了一个字母左右,所以用户尝试再次登录,但这次他们实际上是将他们的凭据提交给恶意登录表单,而不是您的。黑客将他们的凭据提交到您的网站后,会将他们重定向到您的网站,这样他们就不会发现任何错误,在他们看来,他们输错了密码,但在第二次尝试时,他们成功登录。所以使用LocalRedirect()而不是Redirect()首先检查返回的 url 是否是您自己网站的 url,如果不是,则重定向失败并抛出异常。避免异常但检查本地 url 的另一种方法是执行以下操作:
if (Url.IsLocalUrl(ReturnUrl)) {
return Redirect(ReturnUrl);
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供相同的结果而不会引发异常,因为您首先检查 url 是否属于您的 Web 应用程序,然后再继续重定向
| 归档时间: |
|
| 查看次数: |
12918 次 |
| 最近记录: |