[TYPO3-UG Dutch] value waarde in formulier

Patrick Broens patrick at patrickbroens.nl
Tue Nov 27 15:02:58 CET 2007


Leen Strijk wrote:
> Hoi Patrick,
> 
> Ik heb de volgende controles:
> De ge-uploadde bestanden hebben 644 als rechten. iedereen lezen en owner 
> schrijven dus.
> Ook deze controle bij submit
> if ($_FILES['logo']['name']){
>     if ($_FILES['logo']['size'] > 50000){
>     $error = TRUE;
>     $logoError = '<font color="red">'.htmlspecialchars(              
> $this->pi_getLL('logo_size_error')).'</font>';
>     }
>     if (!ereg('image/jpeg|image/gif',$_FILES['logo']['type'])){
Dit is de mime afkomstig van de client en is dus te faken. Hier kun je 
dus andere bestanden mee uploaden. Server side check is aan te raden. 
Heb je dit al getest in IE7, want bijna geen JPEG zal aankomen. Voor IE7 
is dit namelijk image/pjpeg. En wat dacht je van image/jpg?
>     $error = TRUE;
>     $logoError = $logoError.'<br > <font                
> color="red">'.htmlspecialchars($this->pi_getLL('logo_type_error')).'</font>'; 
> 
>     }
> }
> Als het nog beter kan hoor ik het graag.
Als je alleen images gebruikt, dan kan ik de php functie 
exif_imagetype() aanbevelen, onderdeel van libexif (exif extension).
> 
> Een en ander wat je schrijft had ik min of meer al een beetje begrepen, 
> en ben daarom nu bezig om de file uploads middels een popup scherm te doen.
> In het formulier kan ik dan laten zien of en welk bestand al aanwezig 
> is. Dat kon ik al eerder maar als je dan een update uitvoerde was je de 
> waarde in logo kwijt. Omdat ik ook controleer of er al een bestand met 
> dezelfde naam is krijg je hem daarna niet meer in de database. Dan moet 
> het bestand eerst verwijderd worden.
> 
> groeten Leen
> 
> 
> 
> Patrick Broens schreef:
>> Leen,
>>
>> Als ik het goed begrijp wil je de inhoud van de database terug in het 
>> formulier laten komen en werkt dit niet voor input type="file". Dat 
>> klopt, want dat kan niet. Als een gebruiker naar een bestand zoekt om 
>> deze te uploaden, dan zoekt hij/zij in het locale bestandssysteem. 
>> Hiervan weet jij de waarde niet, simpelweg omdat die niet wordt 
>> doorgestuurd (veiligheid). Het haalt dan ook niets uit om de waarde 
>> uit de database in dit veld terug te plaatsen.
>>
>> Voor het geval dat iemand begint te roepen: Dit kan wel. In sommige 
>> browsers kan het inderdaad met javascript, maar niet iedere browser 
>> laat dit toe. Officieel hoort dit een read-only waarde te zijn. Iedere 
>> browser die dit wel toelaat zou onmiddelijk op de brandstapel moeten, 
>> want dan praat je over een major security hole.
>>
>> Wat ik vaak doe bij een uploadveld is een link plaatsen naar het 
>> vorige bestand dat is geupload, of in het geval van een afbeelding, de 
>> afbeelding erbij plaatsen als thumbnail. Dan weet de gebruiker in 
>> ieder geval wat hij/zij heeft geupload.
>>
>> En dan nog even een zijdelingse opmerking: File uploads kunnen erg 
>> gevaarlijk zijn. Hier dien je dan ook alle beveiliging op los te laten 
>> die er maar voorhanden is. Dat begint bij de controle van het 
>> mime-type (server side, niet de mime type die door de client wordt 
>> verstuurd, want die kan gefaked zijn), en alles wat je maar kunt 
>> bedenken. Ook de directory waar uiteindelijk de upload terecht komt 
>> dient goed beveiligd te zijn. Stel dat ik middels jouw script een php 
>> file kan uploaden, vervolgens weet waar het staat en het ook nog kan 
>> uitvoeren, dan begrijp je waar ik het over heb.
>>
>> Nooit dus blindelings elk geuploade bestand accepteren.
>>
>> Patrick
>>
>> Leen Strijk wrote:
>>> Hoi,
>>>
>>> Ik heb er nog eens over nagedacht maar misschien is het beter om de 
>>> bestanden niet via een file veld in het formulier te doen maar in een 
>>> popup window met een fileupload formulier.
>>>
>>> gr Leen
>>>
>>>
>>> Leen Strijk schreef:
>>>> Hallo,
>>>>
>>>> In mijn extensie heb ik een formulier gemaakt.
>>>> Een van de velden is een file upload veld
>>>>
>>>> Nu heb ik ook een gedeelte wat een databaserecord ophaalt en in de 
>>>> formuliervelden zet met behulp van value="waarde uit de db"
>>>> Hiermee kan je een record aanpassen.
>>>>
>>>> Dit werkt allemaal goed behalve met de file velden.
>>>> De waardes komen niet in de velden.
>>>> Dat is ook zo bij de controle. Als er een fout is geeft hij het 
>>>> formulier terug met eventuele foutmeldingen.
>>>> Als bijv de postcode fout is zou ik graag willen dat de file die ik 
>>>> wil uploaden onthouden wordt. Kan dat?
>>>>
>>>> gr Leen
>>>
> 


More information about the TYPO3-UG-dutch mailing list