2010-02-25 7 views
16

Ho una pagina in un'app ASP.Net (il suo Mvc in realtà ma non importante) e vorrei solo consentire le connessioni a questa pagina dalla macchina locale. Mi piacerebbe fare qualcosa di simile nel web.config:E 'possibile configurare una posizione in Web.config per consentire solo connessioni locali

<location path="resources"><system.web><authorization><allow ips="local"/></authorization></system.web></location> 

So che questo è possibile con un semplice controllo nel codice della pagina dietro (o del controller) e its even possible just with IIS configuration ma mi piacerebbe una configurazione Web.config come questa sarebbe la soluzione più elegante a mio parere. Qualcuno sà se questo è possibile?

Grazie

Guido

+0

Sono i tuoi utenti su un dominio di Windows? In tal caso, è possibile limitare l'accesso solo agli utenti del dominio. Sarebbe molto simile alla risposta di @ lance. – jrummell

+0

Nota: questo non è possibile, tutte le soluzioni richiedono la scrittura del codice (nessuna soluzione pronta all'uso disponibile) – gatapia

risposta

4

Questo non è quello che hai chiesto, ma è possibile specificare gli utenti del   macchina locale. Non riesco a immaginare che questo sia pratico a meno che non sia un piccolo numero di utenti che desideri autorizzare.

<location path="resources"> 
    <system.web> 
    <authorization> 
     <allow users="LOCALMACHINENAME\UsernameOfTrustedUser"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 
+0

Ciao Lance, Questo non aiuterà come utente IIS che eseguirà periodicamente questa pagina e al momento non sono "Impersonazione" quindi tutti gli utenti sarebbero gli utenti di IIS. – gatapia

+0

Hai provato questo suggerimento? Dovrebbe funzionare. L'uso di "Impersonazione" non è rilevante per l'esempio di autenticazione qui. –

0

Si potrebbe creare la propria sezione di configurazione che sarebbe parte del tuo web.config e quindi utilizzare l'impostazione per controllare il comportamento in global.asax Session_Start.

2
  1. inventare un alias non DNS della macchina, ossia "PrivateHostName".
  2. Impostare questo valore nel file degli host locali in modo che punti a 127.0.0.1.
  3. Impostare un'intestazione host (IIS) per il sito Web in modo che risponda solo alle richieste di indirizzo "PrivateHostName".
  4. Per tutte le chiamate locali utilizzare il nome host privato.

I client remoti non saranno in grado di risolvere il nome host.

È possibile proteggerlo di più utilizzando un indirizzo IP dedicato collegato a una scheda di rete virtuale che non risponderebbe effettivamente alle richieste esterne.

+5

Soluzione non sicura. Hacker può aggiungere questo alias al suo file hosts locale e ottenere l'accesso al sito web. – meir

25

Si può chiedere di IIS per limitare l'accesso a una risorsa indirizzo IP all'interno del web.config:

<location path="resources"> 
    <system.webServer> 
    <security> 
     <ipSecurity allowUnlisted="false"> 
     <clear/> 
     <add ipAddress="127.0.0.1"/> 
     </ipSecurity> 
    </security> 
    </system.webServer> 
</location> 

More info

EDIT: Come Mike indicò nel commento qui sotto, questo richiede il modulo IP e Domain Restrictions da installare. Grazie Mike!

+7

Grazie per la risposta. Per cominciare, questo non ha funzionato per me - l'impostazione sembrava essere ignorata da IIS. Ho finalmente capito che su Windows 7, il modulo IP e Domain Restrictions non è installato di default. Per farlo funzionare ho dovuto fare per 'Pannello di controllo> Programmi e funzionalità> Attivare o disattivare le funzionalità di Windows> Internet Information Services> Servizi Web> Sicurezza» e selezionare 'Sicurezza IP'. –

+0

Sembra funzionare alla grande, ma sai come modificare l'output della pagina? Ricevo un codice di stato 200 e nella pagina si legge: "Accesso da remoto non consentito (2)." – Redtopia

+0

@Redtopia: è possibile aggiungere una pagina di errore 403. Nel web.config si avrebbe bisogno: Daniel

1

Ho trovato utile anche questo, se si desidera specificare un intervallo di indirizzi IP. È possibile aggiungere il seguente blocco di codice a voi web.config

<system.webServer> 
    <security> 
     <ipSecurity allowUnlisted="false"> 
      <clear/> 
      <add ipAddress="95.110.115.0" subnetMask="255.255.255.0"/> 
      <!--blocks range 95.110.115.0 to 95.110.115.255-->  
      <add ipAddress="95.110.0.0" subnetMask="255.255.0.0"/>  
      <!--blocks range 95.110.0.0 to 95.110.255.255-->  
      <add ipAddress="95.0.0.0" subnetMask="255.0.0.0"/>   
      <!--blocks range 95.0.0.0 to 95.255.255.255--> 
     </ipSecurity> 
    </security> 
</system.webServer> 
Problemi correlati