L'utilizzo di enctype="multipart / form-data" è sempre una cattiva idea?

0

Se il modulo non ha alcun caricamento di file, devi semplicemente usare enctype="multipart/form-data" ovunque, è una cattiva idea dal punto di vista della sicurezza?

Qui qualcuno dice, nel 2007

Uusing enctype="multipart/form-data" creates both a binary and an ascii upload, so there's a doubling of the traffic. I'm not aware of any other issues. However, it seems to me that allowing binary uploads may create some security concerns.

Oltre a inviare dati non necessari al server, come può essere sfruttato?

    
posta Lynob 31.01.2018 - 17:19
fonte

1 risposta

5

Using enctype="multipart/form-data" creates both a binary and an ascii upload

Considero questa affermazione errata. Esiste application/x-www-form-urlencoded in cui il corpo della richiesta POST è costituito dalla stessa stringa che verrebbe utilizzata dopo ? nell'URL se è stata utilizzata una richiesta GET, ad esempio:

  POST /foo HTTP/1.1
  Content-type: application/x-www-form-urlencoded
  Content-length: ...
  ...
  foo=one&bar=two

E poi c'è multipart/form-data che è un messaggio MIME multipart dove ogni parte è costituita dal nome della chiave dato nell'intestazione e dal corpo contenente il valore:

  POST /foo HTTP/1.1
  Content-type: multipart/form-data; boundary=abcde
  Content-length: ...
  ...
  --abcde
  Content-Disposition: form-data; name=foo

  one
  --abcde
  Content-Disposition: form-data; name=bar

  two
  --abcde--

Ogni parte viene inviata una sola volta e i dati binari (come i caricamenti di file) vengono inviati solo come binari.

Apart from sending unnecessary data to the server, how this may be exploited?

Entrambi i modi possono essere utilizzati con diverse varianti per cercare di aggirare i firewall delle applicazioni Web (WAF). Con application/x-www-form-urlencoded si potrebbe ad esempio provare a giocare con la codifica dell'URL in posti inattesi (come la codifica delle chiavi, = o & ) nella speranza che WAF e il server interpreteranno i dati in modo diverso. Oppure puoi usare chiavi duplicate ecc.

Con multipart/form-data si potrebbero provare anche alcune di queste variazioni. Ma MIME offre ancora più possibilità, specialmente se una libreria viene utilizzata per l'analisi che viene utilizzata anche per MIME nelle e-mail. In questo caso si potrebbe provare a giocare con limiti innovativi, confini duplicati (dove server e WAF potrebbero sceglierne uno diverso), provare a usare Content-Transfer-Encoding ecc. Ma un WAF migliore semplicemente scarterà uno di questi tentativi poiché i browser non emettere tali richieste.

    
risposta data 31.01.2018 - 18:15
fonte

Leggi altre domande sui tag