type=file value?
no.kate
- javascript
0 Christian Seiler0 no.kate0 Cheatah0 no.kate
0 Christian Seiler
Folgendes Problem:
ich kann das value eines inputs mit type=file mit js zwar auslesen aber nicht ändern. Ist das irgendwie möglich??
hier mein script:
//geht
onchange="javascript:if(!this.value.match('.jpg')){javascript:alert('kein jpg');}"
//geht nicht
onchange="javascript:if(!this.value.match('.jpg')){this.value='';}"
Kann mir jemand helfen?
Mir würde auch schon reichen wenn mir jemand sagt wie ich in einem "file" nur bestimmte Dateiendungen zulasse.
mfg kate
Hallo kate,
ich kann das value eines inputs mit type=file mit js zwar auslesen aber nicht ändern. Ist das irgendwie möglich??
Nein, sicherheitstechnisch nicht. Stelle Dir mal vor, jemand würde folgendes Script verwenden:
document.forms['meinformular'].elements['dateieingabe'].value = 'C:\autoexec.bat';
// oder eine andere Datei, die viel wichtigere Infos enthält
document.forms['meinformular'].submit();
Klar, _Du_ willst das nicht machen, aber wie kann ein Browser zwischen einer »guten« und einer »bösen« Seite unterscheiden?
Mir würde auch schon reichen wenn mir jemand sagt wie ich in einem "file" nur bestimmte Dateiendungen zulasse.
Die Dateiendung sagt rein gar nichts über den tatsächlichen Inhalt der Datei aus - Du musst serverseitig prüfen, ob die Datei vom gewünschten Typ ist. (und zwar _nicht_ anhand der Endung, sondern anhand des Inhaltes!) Bei PHP gibt es z.B. http://de3.php.net/de/getimagesize (das liefert auch den Dateityp) - bei anderen Sprachen gibt es andere Methoden.
Clientseitig hast Du vermutlich keine Chance, etwas in der Richtung anzustellen, die Endung zu überprüfen ist m.E. nach Quatsch, da ich ja wunderbar eine JPEG-Datei als meinbild.meineeigeneendung abspeichern kann.
Christian
Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.
Naja aber schon thx erstmal so weit ;)
mfg kate
Hi,
Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.
und wie willst Du das tun, wenn er seine Virus-Executable "picture.jpg" nennt?
Cheatah
Och, wenn die site nicht public ist geht das schon... ^^
mfg kate
Hi,
Och, wenn die site nicht public ist geht das schon... ^^
Du gehst in erster Linie nicht von einem bestimmten Benutzerverhalten aus, sondern von technischen Umgebungen. Die richtige und für Dich einzig relevante Frage lautet: Existiert ein Weg, eine Virus-Executable als "picture.jpg" zu benamsen?
Cheatah
Hallo kate,
Och, wenn die site nicht public ist geht das schon... ^^
1. Dir sollte klar sein, dass »Angriffe« oft von innen kommen.
2. Wenn Du so viel Vertrauen in Deine Benutzer setzt, warum willst Du dann überhaupt noch überprüfen?
3. Was spricht denn nun gegen eine serverseitige Prüfung des Dateiinhalts? Die Datei kommt nämlich sowieso beim Server an und Du musst sie sowieso irgendwie verarbeiten. Ich habe genau diese Prüfung, die ich vorgeschlagen habe, (getimagesize) bei einem meiner PHP-Scripte verwendet - es sind genau 4 Zeilen, die *sehr* einfach aufgebaut sind. (ich nehme an, dass es in anderen Sprachen genauso einfach geht) Das ist sicher und einfach - ich verstehe das Problem dabei nicht.
Christian
Nein, ein Problem habe ich wirklich nicht.
Warum ich die überprüfung Clientseitig haben wollte?
Ganz einfach. Der User nimmt ein Bild setzt es rein schickt es ab...
warten...
warten...
Rückmeldung: Fehler, das Bild ist keine jpg Datei...
User ist natuerlich genervt.
Darum.
Wobei es hier keine Rolle spielt was hinter der Endung jpg versteckt sein könnte, weil ich in diesem, diesem einen Fall wirklich vertrauen habe ;)
mfg kate
Hi!
Nein, ein Problem habe ich wirklich nicht.
Warum ich die überprüfung Clientseitig haben wollte?
Ganz einfach. Der User nimmt ein Bild setzt es rein schickt es ab...
warten...
warten...
Rückmeldung: Fehler, das Bild ist keine jpg Datei...
User ist natuerlich genervt.
Darum.
Ich weiss ja nicht, was fuer ne Art von Leute Deine Zielgruppe da ist, aber mich nervt das immer tierisch, wenn sich irgendein Programm fuer so unglaublich schlau haelt und eine Datei zurueckweist, weil der Dateiname nicht irgendwelchen stupiden Regeln entspricht. Z.B. kann ich keine MPEG-2 Dateien an einen gewissen kommerziellen MPEG&DVD-Player verfuettern, wenn ich die auch so genannt habe, also mit Endung .mpeg-2, nein, da muss es eben unbedingt .mpg sein. :-( JPEGs nenn' ich uebrigens immer .jpeg, wie es sich gehoert, und nicht .jpg, was ja nur ein Workaround fuer die abgefuckten Dateisysteme voellig veralteter Betriebssyteme eines Redmonder Herstellers ist.
So long
Hallo kate,
Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.
Nur weil eine Dateiname auf ».jpg« endet, lässt dies noch lange_nicht auf den Inhalt Rückschlüsse ziehen. Es _kann_ eine JPEG-Datei sein, es _muss_ aber nicht. Die einzige _zuverlässige_ Möglichkeit, festzustellen, ob es sich um eine JPEG-Datei handelt, ist den Inhalt zu prüfen - und das geht _nur_ serverseitig.
Christian