Désactivation de la requête PUT TRACE DELETE dans Apache Tomcat 6.0
-
11-07-2019 - |
Question
J'ai besoin de désactiver PUT, DELETE & amp; Les requêtes HTTP TRACE sur mon serveur d'applications, Apache Tomcat 6.0.
Toutes les autres sources, que j'ai recherchées jusqu'à présent, m'ont orienté vers le paramètre limit dans httpd.conf , c'est pourquoi je dirais d'avance que je n'utilise pas Apache Web Server, et les demandes sont directement traitées par Tomcat, il n'y a donc pas httpd.conf dans l'image.
Suggérez-moi comment je devrais le faire sur Tomcat?
La solution
Dans votre WEBINF, vous pouvez ajouter une contrainte de sécurité:
<security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/blah/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>empty_role</role-name>
</auth-constraint>
</security-constraint>
Vous pouvez également effectuer ces deux opérations:
Dans server.xml, modifiez l'élément <connector>
, ajoutez un attribut: allowTrace="false"
. Ensuite, éditez le DefaultServlet: $ CATALINA_HOME / conf / web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<!-- blah blah blah -->
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Autres conseils
La réponse réside dans la spécification de servlet. En examinant l'API du servlet: http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServlet.html , vous verrez que différentes méthodes gèrent type différent de requêtes HTTP. En outre, il existe une fonctionnalité intéressante appelée filtres qui peut être utilisée pour envelopper du code autour des servlets et des filtres.
Les solutions sont donc les suivantes:
- Modifiez le servlet pour ne prendre en charge que do et get; ou
- Créez un filtre pour supprimer ces autres types de demandes.