2016-12-08 2 views
1

Ich versuche, JBOSS HTTP OPTIONS-Methode zu deaktivieren. Mit der folgenden Syntax in der web.xml in JBoss kann ich die HTTP-Methode außer OPTIONS deaktivieren. Gibt es eine Möglichkeit, HTTP-Methode OPTIONEN erfolgreich zu deaktivieren?Wie deaktiviert man HTTP OPTIONS-Methode in JBoss?

click here for screenshot

<security-constraint> 
<web-resource-collection> 
    <web-resource-name>Restricted</web-resource-name> 
    <description>Declarative security tests</description> 
    <url-pattern>/EVE/*</url-pattern>  
    <http-method>PUT</http-method> 
    <http-method>DELETE</http-method> 
    <http-method>OPTIONS</http-method> 
    <http-method>TRACE</http-method>  
</web-resource-collection> 
<auth-constraint> 
    <description>Only authenticated users can access secure content</description> 
    <role-name>AuthorizedUser</role-name> 
</auth-constraint> 
<user-data-constraint> 
    <description>no description</description> 
    <transport-guarantee>NONE</transport-guarantee> 
</user-data-constraint> 
</security-constraint> <security-constraint> 
<web-resource-collection> 
    <web-resource-name>Restricted 2</web-resource-name> 
    <description>Declarative security tests</description> 
    <url-pattern>/*</url-pattern>   
    <http-method>PUT</http-method> 
    <http-method>DELETE</http-method> 
    <http-method>OPTIONS</http-method> 
    <http-method>TRACE</http-method> 
</web-resource-collection> 
<auth-constraint> 
    <description>Only authenticated users can access secure content</description> 
    <role-name>AuthorizedUser</role-name> 
</auth-constraint> 
<user-data-constraint> 
    <description>no description</description> 
    <transport-guarantee>NONE</transport-guarantee> 
</user-data-constraint> 
</security-constraint> 

Antwort

0

würde ich vorschlagen, mod_rewrite. Es ist sauberer.

0
here are the following ways to limit HTTP methods in a web application: 

1. Adding security constraints in web.xml 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>NoAccess</web-resource-name> 
     <url-pattern>/*</url-pattern> 
      <http-method>DELETE</http-method> 
      <http-method>TRACE</http-method> 
      <http-method>OPTIONS</http-method> 
    </web-resource-collection> 
    <auth-constraint/> 
</security-constraint> 

Here DELETE, TRACE and OPTIONS are restricted for all urls. curl -kvv -X DELETE <url> will give 403 Forbidden 

2. Using Rewrite rules in domain.xml 

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false"> 
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> 
    <virtual-server name="default-host" enable-welcome-root="true"> 
     <rewrite pattern=".*" substitution="-" flags="F"> 
      <condition test="%{REQUEST_METHOD}" pattern="^(DELETE|TRACE|OPTIONS)$" flags="NC" /> 
    </rewrite> 
    </virtual-server> 
</subsystem> 

3. Using mod_rewrite in httpd 
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} ^(DELETE|TRACE|OPTIONS)$ [NC] 
    RewriteRule .* - [F] 
2

Option 1 - Mit RewriteValve (global gelten)

Sie RewriteValve verwenden können, die HTTP-Methoden zu deaktivieren. Werfen Sie einen Blick auf documentation. Sie benötigen eine RewriteCond-Direktive und eine RewriteRule.

In Ihrer RewriteCond Richtlinie könnten Sie alle Methoden unter Verwendung des REQUEST_METHOD Servervariablen angeben, zum Beispiel:

RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|TRACE|OPTIONS)$ [NC] 

dann RewriteRule sofort diejenigen, die als verboten (sie markieren kann eine HTTP-Antwort von 403 senden (verboten)), zum Beispiel:

RewriteRule .* - [F] 

Bei Jboss EAP 6

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false"> 
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> 
    <virtual-server name="default-host" enable-welcome-root="true"> 
     <rewrite pattern=".*" substitution="-" flags="F"> 
      <condition test="%{REQUEST_METHOD}" pattern="^(PUT|DELETE|TRACE|OPTIONS)$" flags="NC" /> 
    </rewrite> 
    </virtual-server> 
</subsystem> 

Abgesehen davon, wie in der obigen Antwort gesagt, kann es per web.xml pro Krieg erfolgen.

Um oben Gebrauch zu überprüfen

curl -v -X TRACE http://hostname:port/appContext 
curl -v -X DELETE http://hostname:port/appContex 
0

Mit de Antwort von Ravikant Sharma (danke)

Fund in server.xml (in meinem Fall /jboss-5.1.0.GA/server/default/ deploy/jbossweb.sar)

innerhalb von Tags < Motor> und < Host> könnten Sie einen < Ventil> Tag sehen, shuld Sie einen neuen Ventil-Tag wie dieser Einsatz

< Ventil classname = "org.jboss.web.rewrite.RewriteValve" />

dann in Config-Ordner in meinem Fall /jboss-5.1.0.GA/server/default/conf/

sehen wenn Sie von folgenden Pfade und Datei haben (wenn Sie `t müssen Sie es schaffen)

/jboss.web/localhost/rewrite.properties

in der Datei, die Sie

RewriteCond% schreiben müssen { REQUEST_METHOD}^(OPTIONS) $ [NC]

RewriteRule * - [F]

so vor de Konfiguration Sie sehen:.

curl -i -X ​​OPTIONS http://192.168.133.1:8080 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.5; JBoss-5.0/jbossweb-2.1 zulassen: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONEN Content-Length: 0 Datum: Mi, 28. Dezember 2016 01.13.37 GMT

nach Konfiguration Sie sehen

curl -i -X ​​OPTIONS http://192.168.133.1:8080 HTTP/1.1 403 Forbidden Server: Apache-Coyote/1.1 Transfer-Encoding: chunked Datum: Mi, 28. Dezember 2016 01.19.34 GMT

;)

Verwandte Themen