Ich glaube, dass Ihr Code für Directory Traversal Angriffe anfällig sein könnte - wenn jemand "/../../foo" als fileid
bereitgestellt, dann wäre der Pfad "filename/../../foo.txt"
, die ein gültiges Ziel sein könnte. Siehe: http://en.wikipedia.org/wiki/Directory_traversal
ich mit @jeroen bin und @ shiplu.mokadd.im, die Ihre Eingabe schlägt Hygienisierung - fileid
unter der Annahme ist eine Zahl, dann die intval()
Funktion werden Sie tun, fein:
$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 FS '\ 0' Zeichen werden nur entfernt –
Ich würde alle Zweifel entfernen und einfach die Eingabe validieren; Verwenden Sie eine Whitelist, eine Regex, Casting zu Int oder was auch immer am besten passt. – jeroen
% 00 --- http://ha.ckers.org/blog/20060914/php-vulnerable-to-null-byte-injection/ – user956584