2012-08-26 3 views
12

Aus Sicherheitsgründen möchte ich diese Methoden durch Anwendungsebene deaktivieren, so iDeaktivieren des HTTP-OPTIONS, TRACE, HEAD, COPY und UNLOCK Methoden 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> 

diese web.config-Datei aber das hat nicht funktioniert irgendwelche ideen?

Antwort

4

Dies funktionierte für mich aber erst nach dem Erzwingen der spezifischen Verben durch den Standard-Handler.

<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"/> 

Sie verwenden immer noch die gleiche Konfiguration wie Sie oben haben, sondern auch dazu zwingen, die Verben mit den Standard-Handler und validiert behandelt werden. Quelle: http://forums.asp.net/t/1311323.aspx

Ein einfacher Weg zu testen ist nur zu verweigern GET und sehen, ob Ihre Website lädt.

+1

auch nach dem Code es mir nicht funktioniert. Kannst du mir bitte vorschlagen, was ich vermisse? Meine Erfahrung ist asp.net und IIS – Ram

+0

@Ram Ohne Ihre Konfiguration zu sehen oder irgendwelche Kenntnisse über Ihre Umgebung zu haben, kann ich nichts vorschlagen. Bitte als Frage zu SO und referenziere diese Frage mit mehr Details zu deinem aktuellen Setup. – BrutalDev

+1

Ich erhalte HTTP Error 500.23 - Interner Server Fehler ..! @BrutalDev, hast du eine Ahnung von dieser Situation .. –

21

Endlich habe ich eine andere Antwort für dieses Problem gefunden. und das funktioniert für mich. Fügen Sie einfach die folgenden Daten zu Ihrer Webconfig-Datei hinzu.

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

Formular weitere Informationen, können Sie diese Website besuchen: http://www.iis.net/learn/manage/configuring-security/use-request-filtering

, wenn Sie Ihre Web-Site testen wollen, ist es oder nicht funktioniert ... Sie verwenden können "HttpRequester" mozilla firefox Plugin. für dieses Plugin: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

+0

Eine andere Möglichkeit, dies zu testen, ist einen guten Web-Scanner für Ihre Website (Sie sollten dies trotzdem tun). Wenn OPTIONS aktiviert ist, sollte es es aufnehmen. – nmit026

+0

Interessant. Mit IIS 7.5 habe ich 500.19 Fehler erhalten, als ich die Zeilen, die Sie erwähnen, hinzugefügt habe. Scheint, dass es mit meinen Einstellungen von applicationHost.config in Konflikt steht. –

0

Für alle, die nach einer UI-Option mit IIS-Manager suchen.

  1. Öffnen Sie die Webseite in IIS-Manager
  2. Go To Request Filtering und öffnen Sie die Anforderungsfilterung Fenster.
  3. Gehen Sie zu Verben Tab und HTTP-Verben zu "Erlaube Verb ..." oder "Verweigern Verb ...". Dies ermöglicht das Hinzufügen der HTTP-Verben in der "Deny Verb .." Sammlung.

Request Filtering Fenster in IIS-Manager Request Filtering Window in IIS Manager

hinzufügen Verb ... oder Verb Deny ... enter image description here

Verwandte Themen