• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick
  • Auch in diesem Jahr möchten wir auf unserer Webseite mit einem passenden Banner etwas weihnachtliche Stimmung verbreiten. Jeder Apfeltalker kann, darf und sollte uns einen Banner-Entwurf zusenden, wie und wo das geht, könnt Ihr hier nachlesen --> Klick

[PHP] per fwrite erstellte Dateien nicht lesbar

lowflyer7

Cripps Pink
Registriert
29.01.08
Beiträge
154
Hallo zusammen,

ich habe das Problem, dass scheinbar Dateien auf meinem Server irgendwie anders erstellt werden, als lokal auf meinem Mac unter MAMP. Der Schreibbefehl ist identisch.

Code:
[COLOR=#889AB5]$file [/COLOR][COLOR=#D7B67C]= [/COLOR][COLOR=#E1D797]fopen[/COLOR][COLOR=#F9F9F9]([/COLOR][COLOR=#889AB5]$_GET[/COLOR][COLOR=#D7B67C][[/COLOR][COLOR=#A0AB7D]"gp"[/COLOR][COLOR=#D7B67C]][/COLOR][COLOR=#F9F9F9].[/COLOR][COLOR=#A0AB7D]'/'[/COLOR][COLOR=#F9F9F9].[/COLOR][COLOR=#889AB5]$_GET[/COLOR][COLOR=#D7B67C][[/COLOR][COLOR=#A0AB7D]"gpfile"[/COLOR][COLOR=#D7B67C]][/COLOR][COLOR=#F9F9F9],[/COLOR][COLOR=#A0AB7D]"w+"[/COLOR][COLOR=#f9f9f9]);
[/COLOR][COLOR=#A0AB7D][COLOR=#e1d797]fwrite[/COLOR][COLOR=#f9f9f9]([/COLOR][COLOR=#889ab5]$file[/COLOR][COLOR=#f9f9f9],[/COLOR][COLOR=#889ab5]$_POST[/COLOR][COLOR=#d7b67c][[/COLOR]"filecontent"[COLOR=#d7b67c]]);[/COLOR][COLOR=#f9f9f9]
[/COLOR][COLOR=#E1D797]fclose[/COLOR][COLOR=#F9F9F9]([/COLOR][COLOR=#889AB5]$file;[/COLOR][/COLOR]

Und dennoch habe ich öfters Probleme, dass ich die Dateien nicht wie gewünscht weiterverarbeiten kann, wenn sie von dem einen System erzeugt wurden, aber auf dem anderen gelesen werden sollen.

Interessanterweise werden sie auch im Finder anders dargestellt:

Bildschirmfoto 2013-04-23 um 13.32.55.png

Die einen werden als ausführbare Unix-Datei erkannt, die anderen als Document.

Könnt Ihr mir bitte kurz auf die Sprünge helfen, wie ich das Problem umschiffen kann?

Vielen Dank!
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Code:
[COLOR=#889AB5]$file [/COLOR][COLOR=#D7B67C]= [/COLOR][COLOR=#E1D797]fopen[/COLOR][COLOR=#F9F9F9]([/COLOR][COLOR=#889AB5]$_GET[/COLOR][COLOR=#D7B67C][[/COLOR][COLOR=#A0AB7D]"gp"[/COLOR][COLOR=#D7B67C]][/COLOR][COLOR=#F9F9F9].[/COLOR][COLOR=#A0AB7D]'/'[/COLOR][COLOR=#F9F9F9].[/COLOR][COLOR=#889AB5]$_GET[/COLOR][COLOR=#D7B67C][[/COLOR][COLOR=#A0AB7D]"gpfile"[/COLOR][COLOR=#D7B67C]][/COLOR][COLOR=#F9F9F9],[/COLOR][COLOR=#A0AB7D]"w+"[/COLOR][COLOR=#f9f9f9]);[/COLOR]
Ist das ein Scherz oder führst Du das tatsächlich aus? Wenn letzteres: Prost Mahlzeit.
 

__struct

Jonagold
Registriert
11.04.13
Beiträge
20
Hi,

der Nutzer sollte lediglich das Recht haben den Dateinamen zu üergeben wobei auch hier ordentlich gefiltert werden muss. Dateinamen auf a-zA-Z0-9-_ beschränken und ".." in "." umwandeln.

Daneben muss bedacht werden das aus "<.<." nach entfernen der ungültigen Zeichen (<) ein ".." wird.

Dateiendungen wie .gp.php bedenken.

Dein Beispiel erstellt eine Datei sofern sie nicht gefunden wird "w+". Gebe ich als GET dateiname.gp.php ein wird die Datei erzeugt und ich kann mein php reinkritzeln.

Über den Pfad bzw. ../ kann ich dann das ganze Dateisystem durchwühlen.
 

__struct

Jonagold
Registriert
11.04.13
Beiträge
20
Sein eigentliches Problem liegt wohl darin das es zwei Dateitypen gibt die als Endung gp haben. Einmal eine "geo"-datei und einmal eine Haskell Binary.
 

lowflyer7

Cripps Pink
Registriert
29.01.08
Beiträge
154
Dateiendungen wie .gp.php bedenken.


Das stimmt. Irgendwie hab ich soweit überhaupt nicht gedacht. Ich bin zwar der einzige, der das Skript benutzt, aber es ist einfach eine unnötige Sicherheitslücke. Ich ändere das entsprechend.

Was mein eigentliches Problem angeht, so funktioniert es jetzt merkwürdigerweise. Insofern akzeptiere ich es erst einmal so. Falls das Problem wieder auftritt, melde ich mich noch mal.

Erst mal vielen Dank für die konstruktiven Tipps.