Parsing dei nomi dei file: non si fa così

CitofonoQuesta mattina ero da un cliente che mi cheide «Visto che sei qui, mi puoi spiegare perché non riesco a caricare alcuni file su questo sito?»

Il sito era di un ente governativo europeo, i file erano una serie di documenti PDF che devono essere caricati per adempiere ad alcune formalità per poter accedere a qualcosa che non ricordo. Diciamo per poter accedere al livello successivo.

L’interfaccia di caricamento prevedeva il solito form con un <input type='file'...> e una successiva interfaccia in cui era possibile verificare l’effettivo caricamento del file tramite un link <a href=...> per riscaricarlo come verifica o un altro link per cancellarlo e ripetere l’upload.

Il problema era che alcuni file non venivano accettati e la verifica dopo il caricamento dava perennemente un bel 404 di Tomcat, ma solamente su alcuni file. Ovviamente la dimensione del file non era una discriminante. Troppo facile.

La soluzione, trovata in un paio di tentativi, era di non caricare file il cui nome contenesse un punto, i quali causavano l’errore 404 ti Tomcat in fase di verifica.

Probabilmente qualcuno ha scritto un parsing del tipo di file cercando il primo punto nel nome di un file partendo da sinistra.

Complimenti per tre motivi: (1) in mancanza di funzioni di sistema, l’estensione di un file si cerca fermandosi al primo punto partendo da destra; (2) l’uso dell’estensione DOS/Windows non garantisce un fico secco, meglio usare il magic number o sistemi più affidabili; (3) HTTP POST passa solitamente anche il MIME type del file, inutile verificare l’estensione, meglio incrociare con il magic number.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

2 pensieri riguardo “Parsing dei nomi dei file: non si fa così”

Spazio per un commento