La documentazione PHP per is_uploaded_file dice:
Returns TRUE if the file named by filename was uploaded via HTTP POST. This is useful to help ensure that a malicious user hasn't tried to trick the script into working on files upon which it should not be working--for instance,
/etc/passwd.
Suggerisce anche questo:
For proper working, the function is_uploaded_file() needs an argument like $_FILES['userfile']['tmp_name'], - the name of the uploaded file on the client's machine $_FILES['userfile']['name'] does not work.
Ma per quanto ne so, tmp_name non è comunque controllato dall'utente, quindi il controllo non dovrebbe essere richiesto.
E se utilizzo name invece di tmp_name durante il caricamento di file (ad esempio utilizzando copy anziché move_uploaded_file ), il mio script di caricamento file non funzionerebbe in realtà, in quanto sposterebbe sempre la parte sbagliata file.
Le mie domande:
- I commenti menzionano che
move_uploaded_fileesegue la verifica diis_uploaded_file, vero? - È
tmp_namecontrollato dall'utente in qualche modo? - Esiste uno scenario realistico in cui
is_uploaded_fileè effettivamente richiesto quando si carica un file - o quando si esegue qualsiasi altra azione come la lettura, l'eliminazione, ecc., in quanto vi sarebbe una vulnerabilità senza di essa? O la funzione è completamente inutile?