2012-08-09 10 views
8

C'è un modo in asp.net per limitare l'accesso a una pagina Web solo da localhost?Come limitare l'accesso alla pagina solo a localhost?

+0

Che cosa vuoi che accada se una richiesta non localhost è fatto? – freefaller

+0

limitare l'accesso – zirus

+1

Sì, penso che capiamo che l'accesso è limitato ... ma esattamente ** cosa ** dovrebbe accadere? ** Cosa ** dovrebbe vedere l'utente? Potrebbero essere diretti da qualche parte? (Se stai rispondendo ad un individuo, devi inserire un '@' seguito dal loro nome utente, altrimenti non riceveranno una notifica) – freefaller

risposta

0

questa potrebbe essere una soluzione:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string localhost = Request.Url.Authority; 
    if (localhost.IndexOf("localhost") != 0) 
     Response.Redirect("defalut.aspx"); 
} 
6

Se si vuole fare questo per una "pagina web" allora io userei IsLocal, ma se si desidera una soluzione sottodirectory userei URL Rewrite 2 http://www.microsoft.com/web/gallery/install.aspx?appid=urlrewrite2. Se non lo hai già installato, vai a prenderlo perché è molto utile. Credo che sarà standard su IIS8.

Quindi aggiungere questo al vostro web.config sotto <system.webServer/>

<rewrite> 
<rules> 
    <!-- if this rule matches stopProcessing any further rules --> 
    <rule name="Block Remote Access to Admin" stopProcessing="true" patternSyntax="ECMAScript" enabled="true"> 
     <!-- specify secure folder matching trailing/or $ == end of string--> 
     <match url="projects(/|$)" ignoreCase="true" /> 
     <conditions logicalGrouping="MatchAll"> 
     <!-- Allow local host --> 
     <add input="{REMOTE_ADDR}" pattern="localhost" ignoreCase="true" negate="true" /> 
     <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" /> 
     <add input="{REMOTE_ADDR}" pattern="::1" negate="true" /> 
     </conditions> 
     <!-- by default, deny all requests. Options here are "AbortRequest" (drop connection), "Redirect" to a 403 page, "CustomResponse", etc. --> 
     <action type="CustomResponse" statusCode="403" statusDescription="Forbidden" statusReason="Access to this URL is restricted"/> 
     <!-- or send the caller to an error page, home page etc 
      <action type="Redirect" url="/public/forbidden.htm" redirectType="Temporary" /> 
     --> 
    </rule> 
    <rules> 
</rewrite> 
12
 if (!HttpContext.Current.Request.IsLocal) 
    { 
     Response.Status = "403 Forbidden"; 
     Response.End(); 
    } 
0

Afferra il 'REMOTE_ADDR' ed eseguirlo contro una regex.

Dim remoteAddress As String = Request.ServerVariables("REMOTE_ADDR") 
If Regex.IsMatch(remoteAddress, "(::1|127\.0\.0\.1)") Then 
    //Call originated from localhost, display page.. 
End If 

devo aggiungere ::1 è come localhost è disponibile se il server è configurato per IPv6

Problemi correlati