您必须始终调用重定向,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,那么保持重定向黑客可以看到 - 什么你相信不能因为你使用了Redirect。
我的基本观点是显示如果您不停地将数据发送回浏览器,则存在的安全线程。重定向是浏览器的标题和指令,但在您需要停止发送任何其他数据的同时,您必须停止发送页面的任何其他部分。