asp.net – 重定向到一个页面,其endResponse为true VS CompleteR
基于
this questions and the answers there,我想问一下重定向的正确方法是什么.
使用Redirect(url,endResponse)的默认方式是抛出ThreadAbortException,因为调用endResponse = true调用End()方法,因此,如果你在try / catch块中使用它,这个exception shown there可以假设为错误,但实际上用户尝试通过停止页面处理的其余部分来重定向到页面. 其他可能的方法是使用endResponse = false调用Redirect(url,endResponse),然后使用HttpContext.Current.ApplicationInstance.CompleteRequest();通过使用它你不会得到任何例外. 所以问题是什么更好用,为什么. 解决方法
您必须始终使用endRespose = true调用重定向,否则任何黑客都可以通过简单地保留重定向来查看页面上的内容.
为了证明我使用Firefox的NoRedirect插件来保存重定向.然后我测试了两个案例,结果如下: 我有一个包含该文本的简单页面 <form id="form1" runat="server"> <div> I am making a redirect - you must NOT see this text. </div> </form> 然后在页面加载尝试使用两种情况进行重定向: 第一种情况,使用Complete Request(); try { // redirect with false that did not throw exception Response.Redirect("SecondEndPage.aspx",false); // complete the Request HttpContext.Current.ApplicationInstance.CompleteRequest(); } catch (Exception x) { } 繁荣,你可以在页面内看到什么! 第二种情况 try { // this is throw the ThreadAbortException exception Response.Redirect("SecondEndPage.aspx",true); } catch (ThreadAbortException) { // ignore it because we know that come from the redirect } catch (Exception x) { } 现在没有显示. 因此,如果您不喜欢黑客在您的页面上看到什么,您必须使用endResponse将其调用为true并停止进行其他处理 – 例如从函数返回而不是继续. 例如,如果您检查用户是否已通过身份验证,他可以看到该页面,或者如果不是,则必须重定向到登录,如果您尝试将endResponse重定向到false,则甚至在登录中,然后持有黑客可以看到的重定向 – 什么你相信不能因为你使用重定向. 我的基本观点是,如果您不停止将数据发送回浏览器,则显示存在的安全线程.重定向是浏览器的标题和指令,但同时您需要停止发送任何其他数据,您必须停止发送页面的任何其他部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET网站“发布”vs Web部署项目
- 如何在ASP.Net Core MVC中使用HTML链接?
- asp.net-mvc – 在同一页面上创建新的父项和子节点
- asp.net-mvc – 如何从我的模型中的kendo编辑器获取值
- asp.net-web-api – 在运行时禁用ApiController
- asp.net-mvc – 保持asp.net mvc控制器的大小
- asp.net-mvc-3 – MVC3:用于发送表单(模型)值和额外参数的
- asp.net-mvc – 针对MVC Web应用程序的域驱动设计与数据库驱
- ASP.NET无法正确处理逗号分隔的cookie
- 如果会话正在使用,单个asp.net用户可以一次使用多个请求吗?
- ASP.NET MVC不适用于ViewState和Postback?
- .net – 参考WCF最佳实践项目
- 在ASP.NET中,如何防止隐藏字段值的篡改
- asp.net-mvc-3 – 从HttpContext.Current访问Tem
- 用HttpClientFactory来实现简单的熔断降级
- asp.net-mvc – 如何添加“必需”属性到mvc 5剃刀
- asp.net-mvc – MVC4 RC WebApi参数绑定
- asp.net-mvc – 如何处理MVC5中的配置和代码中的
- asp.net-mvc – ASP.NET MVC 5身份应用程序用户作
- asp.net – 为什么我不能将if和eval结合起来?最