PHP kapt filenaam af na '

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter R

Wouter R

16/05/2009 13:53:00
Quote Anchor link
Ik heb een probleem. In mijn applicatie (IIS 7.0, PHP 5.2.6) zit een bug (of zoals PHP zegt: "a security measure") waarbij bij het uploaden van een file met in de bestandsnaam een apostrof, alles van deze bestandsnaam voor de apostrof (inclusief de apostrof zelf) wordt afgekapt.

Dus: "Johan's pc.jpg" wordt "s pc.jpg" na uploaden...

Ik heb al wat rondgezocht en het is me allemaal onduidelijk. Op veel site (waaronder php.net) lees ik dat het is opgelost na PHP 4, maar bij mij niet. Ook wil ik voorkomen dat ik grote PHP versie wijzigingen door moet voeren aangezien dat gepaard gaat met veel testen en herschrijven...

Iemand bekend met dit probleem en een (simpele) oplossing daarvoor?
 
PHP hulp

PHP hulp

28/11/2024 14:04:55
 
Winston Smith

Winston Smith

16/05/2009 14:07:00
Quote Anchor link
Een eerste oplossing zou zijn om geen apostrof te gebruiken in bestandsnamen, maar daar heb je wellicht niet altijd controle over.

Heb je een stukje relevante code?
 
Hipska BE

Hipska BE

16/05/2009 14:08:00
Quote Anchor link
Na uploaden of na toevoegen in database?

Toon es code hoe je test wat de filename is?

In een filename hoort zowieso geen ' te staan..
 
Wouter R

Wouter R

16/05/2009 14:13:00
Quote Anchor link
Deze array die direct uit het HTML formulier komt is al niet juist. Dus nog voor dat ik hem naar de database schrijf.

$_FILES['file']['name'] geeft al de verkeerde output...

In mijn geval heb ik inderdaad niet in de hand wat voor soort documentnamen er worden gehanteerd. Aangezien Windows het gewoon toelaat om ' te gebruiken in documentnamen, zijn er een hoop mensen die dat doen...
 
- SanThe -

- SanThe -

16/05/2009 14:40:00
Quote Anchor link
Fatsoenlijke bestandsnamen bestaan alléén uit letters, cijfers en underscores. Meer niet.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Wouter R

Wouter R

16/05/2009 14:42:00
Quote Anchor link
Dat klopt. Maar dat heb je niet altijd zelf in de hand en aangezien Windows het wel toelaat...
 
Midas

Midas

16/05/2009 14:52:00
Quote Anchor link
Geef dan een foutmelding?
 
Wouter R

Wouter R

16/05/2009 14:54:00
Quote Anchor link
Er komt geen foutmelding. Hij verwerkt de file zoals het hoort maar kapt de originele naam af...

Kan ik misschien op een andere manier de naam uitlezen en dat ik dan het document 'hernoem'...?
 
- SanThe -

- SanThe -

16/05/2009 14:55:00
Quote Anchor link
Wouter schreef op 16.05.2009 14:42:
Dat klopt. Maar dat heb je niet altijd zelf in de hand en aangezien Windows het wel toelaat...

Hoezo niet? Tuurlijk heb je dat zelf in de hand.
En dat Windows dat toelaat is één van de redenen dat Windows zo'n buggy software is.
 
Hipska BE

Hipska BE

16/05/2009 15:01:00
Quote Anchor link
Heeft iemand dan een idee wanneer php kan zien dat de bestandsnaam afgekapt werd?

Zodat de pagina dan kan melden dat bestanden met een ' niet toegelaten worden in het systeem van wouter.
 
- SanThe -

- SanThe -

16/05/2009 15:06:00
Quote Anchor link
Als je dit ingeeft => Johan's pc.jpg
Dan is Johan de naam en wat daar achter staat zijn slechts parameters voor Johan. Dat Windows daar weer een eigen variant op heeft gemaakt doet eigenlijk niet terzake.
 
Wouter R

Wouter R

22/05/2009 10:23:00
Quote Anchor link
Niemand heeft al eerder dit probleem meegemaakt?
 
Jelmer -

Jelmer -

22/05/2009 10:31:00
Quote Anchor link
SanThe schreef op 16.05.2009 14:55:
Hoezo niet? Tuurlijk heb je dat zelf in de hand.
En dat Windows dat toelaat is één van de redenen dat Windows zo'n buggy software is.


Haha, ik kan hier op OS X zelfs slashes en backslashes gebruiken in de bestandsnaam >:)

Anyway, kan je het ook testen of het op andere configuraties (andere webserver, apache, andere versie van PHP) wel werkt? Hier onder OS X, Apache2, PHP 5.3rc1 werkt het namelijk wel gewoon zoals je zou verwachten.
 
Wouter R

Wouter R

26/05/2009 09:06:00
Quote Anchor link
Ik draai IIS 7.0 op een Windows Server 2008 machine. Normaal met PHP versie 5.2.6 Ik kan ook versie 4.4.7 draaien, maar dan blijft hetzelfde probleem bestaan...
 
Michael -

Michael -

26/05/2009 09:16:00
Quote Anchor link
Je kan toch met str replace eerst eventuele tekens uit je $_POST verwijderen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
str_replace(array("\\","/","*","\"","<",">","|","#","'"),array("","","","","","","","",""),$string);
?>
 
Wouter R

Wouter R

26/05/2009 09:18:00
Quote Anchor link
Dat klopt, maar in de $string ($_FILES['file']['name']) is het al afgekapt. Het eerste moment waarop de bestandsnaam in een array (var) terecht komt, is de naam al afgekapt... Latere controles of vervangingen zijn dan al te laat...
 
Emmanuel Delay

Emmanuel Delay

26/05/2009 14:53:00
Quote Anchor link
anders een simpele oplossing: urlencode ( http://be.php.net/urlencode )

$filenaam = urlencode ($filenaam) ;
Karakters die een actieve rol spelen in html, php, ... worden dan omgezet in karakters met % notatie.
 
Jelmer -

Jelmer -

26/05/2009 15:04:00
Quote Anchor link
Maar het klinkt alsof het probleem al eerder optreedt, bij het "opstarten" van PHP wanneer je een bestand er naartoe stuurt. Misschien dat je er iets over terug kan vinden op http://bugs.php.net, of op weblogs. Want zoals jij het omschrijft klinkt het meer als een fout van PHP zelf, of van PHP in combinatie met IIS 7 dan iets wat je zelf even kan oplossen.
 
Wouter R

Wouter R

26/05/2009 19:16:00
Quote Anchor link
Ik heb inderdaad al een aantal weblogs en bronnen geraadpleegd (waaronder bv. het forum van de IIS site), maar ik kom nergens een soortgelijk probleem tegen.

Erg raar... Ik kan toch niet de enige zijn?
 

26/05/2009 19:27:00
Quote Anchor link
Hoppa:
http://bugs.php.net/bug.php?id=39604
http://snewscms.com/forum/index.php?topic=7917.0
Geen flauw id of het op jouw van toepassing is, maar je kunt er altijd naar kijken.
 

26/05/2009 20:07:00
Quote Anchor link
je ziet het meer:

http://www.sharemobile.ro/upload.php


Edit:

hihi typ eens < php upload "apostrof" > in bij google, dan komt er een waarschuwing, alsof php spyware is:P
Gewijzigd op 01/01/1970 01:00:00 door
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.