TL; DR: PUT non è supportato da molte cose. A volte è disponibile solo come estensione e le estensioni di attivazione aumentano la superficie di attacco.
@iain ha ragione nel commentare che la domanda SO PUT vs POST in REST è rilevante qui. Dal punto di vista RESTfulness, PUT va bene per l'aggiornamento o addirittura per sovrascrivere un file.
Tuttavia, se discuti dal punto di vista della sicurezza le forme HTML originali non hanno mai supportato PUT, solo GET e POST. Molte informazioni su questo argomento sono disponibili su I metodi PUT, DELETE, HEAD, etc sono disponibili nella maggior parte dei browser web? , anche se alcune informazioni sono obsolete e alcuni link sono morti. Quindi lo riassumerò qui:
HTML
AJAX supporta GET, POST, PUT e persino DELETE. Ma la forma comune in un browser no. HTML5 ha aggiunto il supporto per PUT e DELETE nelle sue versioni di bozze, ma né PUT né DELETE possono essere trovati nella definizione corrente dell'infrastruttura HTML5 . In altre parole, i browser non hanno l'obbligo di capire <form method="PUT">
per conformarsi a HTML5.
server web
Sia Apache che Nginx usano PUT e DELETE come estensioni WebDAV . Se vuoi indurire il tuo webserver, una cosa che fai spesso è compilarla senza le estensioni WebDAV. L'aggiunta di estensioni sta aumentando la superficie di attacco.
Noi quadri d'altra parte spesso non supportano PUT. O, più comunemente, usa semplicemente la stessa funzione per elaborare POST e PUT, rendendo l'uso del verbo PUT proprio come il POST.
Quindi sì, la linea guida OWASP ha un senso. Anche se lo avrei riscritto come: "Se stai implementando REST completo usa PUT, se non usi il POST perché è più ampiamente supportato" .