いくつかの.aspxページで構成されているASP.NETアプリケーションがあります。これらの.aspxページの1つに、特定のIPセットのみがアクセスできるようにしたい。これは可能ですか?
WebサイトレベルでIPホワイトリストを作成できることは知っていますが、アプリケーションの単一のURLのIPホワイトリストを作成できますか?
残念ながら、IISを介して単一のページでそれを行うことはできないと確信しています(検証が必要な場合は、Serverfault.comで詳細を確認してください)が、プログラムで行う場合は、グローバルでApplication_BeginRequestをフックできます。 asaxファイル。リクエストURLとリクエストIPアドレスを制限に照らして確認し、それらが合格した場合にのみリクエストの続行を許可します。
次のリソースは、ASP.NETでクライアントIPを検出する方法を示しています。
http://bytes.com/topic/asp-classic/answers/439176-how-get-clients-ip-address-asp-net
IPを取得したら、おそらくInitイベント中に(ページ内の場合)、選択したストレージメカニズムからホワイトリストをロードし、IPが一致しない場合は、次のように応答します(HttpContext.Current.Response
ページ内にない場合に使用:
if (!mySafeIpList.Contains(clientIP))
{
Response.Clear()
Response.StatusCode = (int)HttpStatusCode.Unauthorized
Response.End()
}
または、単に有効なページにリダイレクトします。
Response.Redirect("~/Head-Fake.aspx")
これがお役に立てば幸いです。
Request.ServerVariables ["REMOTE_HOST"]は、アプリ内の独自のホワイトリストといつでも確認できます。