Hi,
Wenn man eine Datei hochläd, hat man doch eine Variable z.B. mit dem Namen "Datei", und im Wert steht z.B. "Bild.jpg", richtig?
ja, im großen und ganzen. Den Dateinamen des benutzerlokalen Rechners erfährst Du.
Jedenfalls überlege ich, ob man nicht einfach überprüfen kann(if...else... Fehlermeldung), ob im Wert der Variable Datei entweder ".gif" oder ".jpg" vorkommt.
Klar, das ist kein Problem - und bringt Dir trotzdem nichts. Es hindert mich niemand dran, meinen frisch programmierten Virus in "nackte-Frau.gif" umzubenennen und hochzuladen - und wenn jemand dann mit einem HTTP-untauglichen Programm wie dem IE die Ressource anfordert, besteht akute Gefahr der direkten Ausführung, wodurch der Virus schnell verbreitet werden kann.
Bei meinem DB-Script wird auch geprüft, ob der Wer ein "," enthält, was dann autotmatisch in einen "." umgewandelt wird. Das ist doch vergleichbar, oder?
Klar - nur wäre die richtige Analogie nicht, den Dateinamen zu überprüfen, sondern den Datei_inhalt_! Checke die Binärdaten darauf, ob sie den GIF- oder JPEG-Spezifikationen entsprechen. In dem Fall dürfen sie auch "virus.exe" heißen, ohne daß irgendeine Gefahr besteht.
Leider kann ich Dir nicht das Modul Image::Size als "schnelle Möglichkeit" empfehlen, weil ich nicht weiß, wie dieses arbeitet. Möglicherweise liest es nur ein paar Bytes aus, die z.B. bei GIF (dort ist die Position innerhalb der Datei fest) die Größe in Pixeln repräsentieren. In dem Fall wären die Werte auch bei einer EXE evtl. sinnvoll...
Cheatah