La solicitud del atacante utiliza un verbo HTTP de confianza como GET o POST, pero agrega encabezados de solicitud como el método X-HTTP, el método XHTTP-Override, X-Method-Override, o un parámetro de consulta como _método para proporcionar un verbo restringido como PUT o DELETE. Dicha solicitud es interpretada por la aplicación de destino utilizando el verbo en el encabezado de la solicitud en lugar del real Verbo HTTP.
Lo que descubrí para restringir esto es agregar las siguientes entradas en web.xml
:
<security-constraint>
<web-resource-collection>
<web-resource-name>WhiteList_Http_Verbs</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method-omission>GET</http-method-omission>
<http-method-omission>POST</http-method-omission>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
De acuerdo con estas entradas, mi aplicación solo permite solicitudes GET y POST para todos los patrones de URL y restringe todos los otros métodos HTTP.
La restricción de seguridad se aplicará a todos los métodos, excepto aquellos que fueron nombrados en las omisiones, y la restricción se aplicará solo a los recursos que coincidan con los patrones en la restricción.
Mis preguntas:
-
En este caso, ¿va a evitar el método / verbo HEAD a través de los encabezados de solicitud especiales anteriores?
-
¿Estas entradas deshabilitarán el uso de túneles de verbos usando encabezados como X-HTTP-Method, XHTTP-Method-Override?
-
O si esta no es una solución adecuada, ¿qué debemos hacer para evitar este problema?