2012-08-26 4 views
12

Per motivi di sicurezza Voglio disabilitare quei metodi attraverso il livello di applicazione così ho questo file web.configOPZIONI HTTP disabilitare, TRACE, TESTA, copia e sbloccare i metodi in IIS

<configuration> 
<location path="index.php"> 
<system.webServer> 
      <directoryBrowse enabled="false" /> 
</system.webServer> 

<system.web> 
    <authorization> 
     <deny verbs="OPTIONS" users="*" /> 
     <deny verbs="TRACE" users="*" /> 
     <deny verbs="HEAD" users="*" /> 
     <deny verbs="PROPFIND" users="*" /> 
     <deny verbs="COPY" users="*" /> 
     <deny verbs="LOCK" users="*" /> 
     <deny verbs="UNLOCK" users="*" /> 
     <deny verbs="PROPPATCH" users="*" /> 
     <deny verbs="MKCOL" users="*" /> 
     <deny verbs="MOVE" users="*" /> 
     <deny verbs="DELETE" users="*" /> 
    </authorization> 
</system.web> 

ma questo non ha funzionato qualche idea?

risposta

4

Questo ha funzionato per me, ma solo dopo aver forzato i verbi specifici a essere gestiti dal gestore predefinito.

<system.web> 
... 
    <httpHandlers> 
    ... 
    <add path="*" verb="OPTIONS" type="System.Web.DefaultHttpHandler" validate="true"/> 
    <add path="*" verb="TRACE" type="System.Web.DefaultHttpHandler" validate="true"/> 
    <add path="*" verb="HEAD" type="System.Web.DefaultHttpHandler" validate="true"/> 

È ancora possibile utilizzare la stessa configurazione si dispone sopra, ma anche costringere i verbi di essere trattati con il gestore predefinito e convalidati. Fonte: http://forums.asp.net/t/1311323.aspx

Un modo semplice per testare è semplicemente negare GET e verificare se il sito viene caricato.

+1

anche dopo aver utilizzato il codice che non mi funziona. Puoi per favore suggerire cosa potrei mancare. il mio ambiente è asp.net e IIS – Ram

+0

@Ram Senza vedere la tua configurazione o avere alcuna conoscenza del tuo ambiente non posso suggerire nulla. Per favore, fai una domanda su SO e fai riferimento a questa domanda con maggiori dettagli sulla tua attuale configurazione. – BrutalDev

+1

Ricevo l'errore HTTP 500.23 - Errore interno del server ..! @BrutalDev, hai qualche idea su questa situazione .. –

21

Finalmente ho trovato un'altra risposta per questo problema. e questo sta funzionando per me. Basta aggiungere i dati sottostanti al tuo file webconfig.

<configuration> 
<system.webServer> 
    <security> 
    <requestFiltering> 
    <verbs allowUnlisted="true"> 
    <add verb="OPTIONS" allowed="false" /> 
    </verbs> 
    </requestFiltering> 
    </security> 
</system.webServer> 
</configuration> 

Modulo ulteriori informazioni, è possibile visitare questo sito web: http://www.iis.net/learn/manage/configuring-security/use-request-filtering

se si vuole testare il vostro sito web, è che funziona o no ... È possibile utilizzare "HttpRequester" Mozilla Firefox collegare. per questo plug-in: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

+0

Un altro modo per testare questo è di eseguire un buon web scanner contro il tuo sito (dovresti farlo comunque). Se OPTIONS è abilitato, dovrebbe prenderlo. – nmit026

+0

Interessante. Con IIS 7.5 ho iniziato a ricevere errori 500.19 quando ho aggiunto le righe che hai citato. Sembra che sia in conflitto con le mie impostazioni dell'applicazione Host.config. –

0

Per chiunque cerchi un'opzione di interfaccia utente utilizzando Gestione IIS.

  1. aprire il sito Web in Gestione IIS
  2. Vai a Filtro richieste e aprire la finestra Filtro richieste.
  3. Vai a Verbi Scheda e Aggiungi verbi HTTP a "Consenti verbo ..." o "Rifiuta verbo ...". Ciò consente di aggiungere i verbi HTTP nella raccolta "Nega verbo ..".

filtro richieste Finestra in Gestione IIS Request Filtering Window in IIS Manager

Aggiungi Verbo ... o Nega verbo ... enter image description here