常にリダイレクトを呼び出す必要があります。そうしないと、endRespose=true
ハッカーがリダイレクトを保持するだけでページの内容を確認できます。
リダイレクトを保持するために Firefox用のNoRedirectプラグインを使用していることを証明するため。次に、2 つのケースをテストします。結果は次のとおりです。
そのテキストを含む単純なページがあります
<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)
{
}
そしてそこにブームが来て、あなたはページの中身を見ることができます!
そして2番目のケース
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 にリダイレクトしようとすると、ハッカーが表示できるリダイレクトを保持します。リダイレクトを使用しているため、それはできないと考えています。
ここでの私の基本的なポイントは、ブラウザにデータを送り返すことを止めない場合に存在するセキュリティ スレッドを示すことです。リダイレクトはヘッダーであり、ブラウザーへの指示ですが、同時に他のデータの送信を停止する必要があり、ページの他の部分の送信を停止する必要があります。