La richiesta di utente malintenzionato utilizza un verbo HTTP attendibile come GET o POST, ma aggiunge intestazioni di richiesta come X-HTTP-Method, XHTTP-Method-Override, X-Method-Override o un parametro di query come _method per fornire un verbo limitato come PUT o DELETE. Tale richiesta viene interpretata dall'applicazione di destinazione utilizzando il verbo nell'intestazione della richiesta anziché in quello effettivo Verbo HTTP.
Quello che ho capito per limitare questo è aggiungere le seguenti voci in 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>
Secondo queste voci la mia applicazione consente solo le richieste GET e POST per tutti i pattern URL e limita tutti gli altri metodi HTTP.
Il vincolo di sicurezza si applicherà a tutti i metodi tranne quelli che sono stati nominati nelle omissioni e il vincolo si applicherà solo alle risorse corrispondenti ai modelli nel vincolo.
Le mie domande:
-
In questo caso, impedirà il metodo / verbo HEAD attraverso gli header delle richieste speciali sopra?
-
Queste voci disabiliteranno l'uso del verbo tunneling usando intestazioni come X-HTTP-Method, XHTTP-Method-Override?
-
O se questa non è la correzione appropriata, cosa dovremmo fare per evitare questo problema?