Ingo Turski: Welche Datei-Endungen sind "kritisch"?

Beitrag lesen

Hi,

$filename = trim($filename, ".");
  if(!$filename) $filename = date("d-m-Y_H-i-s").'.'.$x;

/** An dieser Stelle wird in Deiner Funktion abgefragt, ob der Dateiname als Boolenschen Wert "TRUE" oder "FALSE" ergibt. Ich habe keine Ahnung, was Du Dir davon versprichst, noch ob Dir klar ist, welche Werte hier zu "FALSE" führen können.

Ich verspreche mir davon, einen Leerstring zu ersetzen; und ja: mir ist klar, daß ich damit auch "0" ausschließe und Leerzeichen true ergeben (aber die wurden ja ohnhin schon konvertiert).

Deshalb habe ich mir derart einen Reim daraus gemacht, daß Du vielleicht auch einen Leerstring Deiner Funktion übergeben magst, damit ein eigenständiger Name aus der aktuellen Zeit gebildet wird.

Nicht ich, sondern der User. Hieraus soll ein brauchbarer Dateiname gemacht werden.

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.

Stimmt, das hatte ich übersehen, sorry.

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.

Ich tippe inzwischen auf eine simple RegEx in der Serverkonfiguration, um auszuschließen, daß cgi und pl außerhalb des hierfür zugelassenen Verzeichnisses aufgerufen werden.

freundliche Grüße
Ingo