Re:
function secureURL($filename=FALSE) {
könntest Du mir das wohl erklären?
Deine ursprüngliche Funktion:
function secureURL($filename) {
$x = 'bin'; $filename = trim($filename);
$ein = array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü', '&','§', ' ','%20','%','<','>','|','/',':','?','*','"',chr(92),chr(10),chr(13));
$aus = array('ae','oe','ue','ss','Ae','Oe','Ue','+','Par.','_','_', '~','~','~','~','~','~','~','~','~','~', '', '');
for ($i=0; $i<count($ein); $i++) {
$filename = str_replace($ein[$i], $aus[$i], $filename);
}
$filename = trim($filename, ".");
if(!$filename) $filename = date("d-m-Y_H-i-s").'.'.$x;
$ext = strtolower(substr($filename, strrpos($filename, '.')+1));
$test = array('php','shtm','htm','class','cgi','fcgi','pl','py','jsp','asp','dll');
for ($i=0; $i<count($test); $i++) {
if(substr($ext,0,strlen($test[$i])) == $test[$i]) $filename .= '.'.$x;
}
return urlencode($filename);
}
$filename = trim($filename, ".");
if($filename===FALSE)
ist das nicht etwas zu früh? Was, wenn "." übergeben wurde?
Da habe ich geschlampt! Vorher sollte natürlich trim(STR,'.'); aufgerufen werden.
if(strpos($test[$i],$ext)===0)
clever - aber das würde dann doch auch harmlose Zeichenketten in der Mitte betreffen.
Deine Definition der mit '.bin' zu erweiternden Datein enthält "php". So werden gleichefalls alle Datein , die auf "php3", "php4" und "php5" enden, erfaßt. Was Du mit "harmlosen Zeichen in der Mitte" meinst, da substr($filename, strrpos($filename, '.')+1) den letzten Punkt des Dateinamen sucht und ab dieser Position die abzuprüfenden Erweiterung bildet, ist mir wiederum nicht klar.
Ich wundere mich allerdings, daß bei Anforderung von 'Mail_Mime-1.3.1.cgi.bin' Forbidden kommt (bei Stanardeinstellung von all-inkl.com). Sollte ich '.cgi' besser ganz löschen? Ist ja blöd, wenn eine hochgeladene Datei nicht abgerufen werden kann.
Diesen Fehler habe ich produziert und mich auch gewundert, was da schief läuft. Allerdings habe ich auch keine einleuchtende Erklärung parat.
Vermutlich wird es das Beste sein die brisanten Endungen zu entfernen.
Gruß aus Berlin!
eddi
--
Achte die Kleinigkeiten, aber liebe das Detail!