L’immagine a fianco mostra un tipico esempio di come non vada scritto il software di gestione di un sito.
L’errore principale in questo caso è stato quello di realizzare un software che accetta un file come parametro passato via HTTP.
Ipotizzando che la lettura di un file passato come parametro sia una necessità, è comunque possibile evitare il directory traversal.
La funzione realpath() permette di convertire i path relativi in path assoluti e, quindi, sanificare le stringhe prima di passarle alle funzioni di apertura file: utilizzando il valore ritornato da realpath('.')
è possibile eseguire dei controlli sulla stringa da sanificare per evitare che vengano caricati file in posizioni non previste.
3 risposte a “Esempio da evitare”
Direi che sia da evitare e basta… senza stare a cercare di mettere pezze a meta`. Quanti ne ho visti fatti cosi`…
Devo ammettere che ho ne ho visti un po’ lato server e mi han chiesto di meterci delle pezze perché il programmatore che c’era PRIMA (e non più) aveva lasciato un buco di sicurezza grosso come il Mediterraneo
Toh… quindi hanno pagato prima il (non-voglio-chiamarlo-)programmatore di prima, e poi te… Insomma hanno pagato due volte.
Quanta gente non capirà questa logica?
K.