credo che il codice potrebbe essere suscettibile ad attacchi di attraversamento delle directory - se qualcuno fornito "/../../foo" come fileid
, allora il percorso sarà "filename/../../foo.txt"
, che potrebbe essere un bersaglio valido. Vedere: http://en.wikipedia.org/wiki/Directory_traversal
sto con @jeroen e @ shiplu.mokadd.im che suggerisce sanificazione tuo contributo - assumendo fileid
è un numero, allora la funzione intval()
ti farà bene:
$num = $_GET['fileid'];
$num = intval($num);
if($num == 0) {
echo "Invalid file ID: Not a number.";
exit;
} else {
$fileName = 'filename' . $num . '.txt';
if(!file_exists($fileName)) {
echo "Invalid file ID: Doesn't exist.";
} else {
// do something
}
}
In Ext3/4 I personaggi di FS '\ 0' sono appena spogliati –
Vorrei rimuovere tutti i dubbi e semplicemente convalidare l'input; usando una whitelist, usando un'espressione regolare, lanciare su int o su qualsiasi altra cosa si applica meglio. – jeroen
% 00 --- http://ha.ckers.org/blog/20060914/php-vulnerable-to-null-byte-injection/ – user956584